firefox-sync-client: init at 1.8.0 (#359637)
[NixPkgs.git] / pkgs / misc / tmux-plugins / default.nix
blob0a2aaa4579315d3906400fe7fe51e9c19a658ba3
1 { lib
2 , fetchFromGitHub
3 , pkgs
4 , stdenv
5 , config
6 }:
8 let
9   rtpPath = "share/tmux-plugins";
11   addRtp = path: rtpFilePath: attrs: derivation:
12     derivation // { rtp = "${derivation}/${path}/${rtpFilePath}"; } // {
13       overrideAttrs = f: mkTmuxPlugin (attrs // f attrs);
14     };
16   mkTmuxPlugin = a@{
17     pluginName,
18     rtpFilePath ? (builtins.replaceStrings ["-"] ["_"] pluginName) + ".tmux",
19     namePrefix ? "tmuxplugin-",
20     src,
21     unpackPhase ? "",
22     configurePhase ? ":",
23     buildPhase ? ":",
24     addonInfo ? null,
25     preInstall ? "",
26     postInstall ? "",
27     path ? lib.getName pluginName,
28     ...
29   }:
30     if lib.hasAttr "dependencies" a then
31       throw "dependencies attribute is obselete. see NixOS/nixpkgs#118034" # added 2021-04-01
32     else addRtp "${rtpPath}/${path}" rtpFilePath a (stdenv.mkDerivation (a // {
33       pname = namePrefix + pluginName;
35       inherit pluginName unpackPhase configurePhase buildPhase addonInfo preInstall postInstall;
37       installPhase = ''
38         runHook preInstall
40         target=$out/${rtpPath}/${path}
41         mkdir -p $out/${rtpPath}
42         cp -r . $target
43         if [ -n "$addonInfo" ]; then
44           echo "$addonInfo" > $target/addon-info.json
45         fi
47         runHook postInstall
48       '';
49     }));
51 in rec {
52   inherit mkTmuxPlugin;
54   battery = mkTmuxPlugin {
55     pluginName = "battery";
56     version = "unstable-2019-07-04";
57     src = fetchFromGitHub {
58       owner = "tmux-plugins";
59       repo = "tmux-battery";
60       rev = "f8b8e8451990365e0c98c38c184962e4f83b793b";
61       sha256 = "1bhdzsx3kdjqjmm1q4j8937lrpkzf71irr3fqhdbddsghwrrmwim";
62     };
63   };
65   better-mouse-mode = mkTmuxPlugin {
66     pluginName = "better-mouse-mode";
67     version = "unstable-2021-08-02";
68     src = fetchFromGitHub {
69       owner = "NHDaly";
70       repo = "tmux-better-mouse-mode";
71       rev = "aa59077c635ab21b251bd8cb4dc24c415e64a58e";
72       sha256 = "06346ih3hzwszhkj25g4xv5av7292s6sdbrdpx39p0n3kgf5mwww";
73     };
74     rtpFilePath = "scroll_copy_mode.tmux";
75     meta = {
76       homepage = "https://github.com/NHDaly/tmux-better-mouse-mode";
77       description = "better mouse support for tmux";
78       longDescription =
79       ''
80         Features:
82           * Emulate mouse-support for full-screen programs like less that don't provide built in mouse support.
83           * Exit copy-mode and return to your prompt by scrolling back all the way down to the bottom.
84           * Adjust your scrolling speed.
85       '';
86       license = lib.licenses.mit;
87       platforms = lib.platforms.unix;
88       maintainers = with lib.maintainers; [ chrispickard ];
89     };
90   };
92   catppuccin = mkTmuxPlugin {
93     pluginName = "catppuccin";
94     version = "unstable-2024-05-15";
95     src = fetchFromGitHub {
96       owner = "catppuccin";
97       repo = "tmux";
98       rev = "697087f593dae0163e01becf483b192894e69e33";
99       hash = "sha256-EHinWa6Zbpumu+ciwcMo6JIIvYFfWWEKH1lwfyZUNTo=";
100     };
101     postInstall = ''
102       sed -i -e 's|''${PLUGIN_DIR}/catppuccin-selected-theme.tmuxtheme|''${TMUX_TMPDIR}/catppuccin-selected-theme.tmuxtheme|g' $target/catppuccin.tmux
103     '';
104     meta = with lib; {
105       homepage = "https://github.com/catppuccin/tmux";
106       description = "Soothing pastel theme for Tmux!";
107       license = licenses.mit;
108       platforms = platforms.unix;
109       maintainers = with maintainers; [ jnsgruk ];
110     };
111   };
113   continuum = mkTmuxPlugin {
114     pluginName = "continuum";
115     version = "unstable-2022-01-25";
116     src = fetchFromGitHub {
117       owner = "tmux-plugins";
118       repo = "tmux-continuum";
119       rev = "fc2f31d79537a5b349f55b74c8ca69abaac1ddbb";
120       sha256 = "06i1jp83iybw76raaxciqz9a7ypgpkvbyjn6jjap8jpqfmj2wmjb";
121     };
122     meta = {
123       homepage = "https://github.com/tmux-plugins/tmux-continuum";
124       description = "continuous saving of tmux environment";
125       longDescription =
126       ''
127         Features:
128         * continuous saving of tmux environment
129         * automatic tmux start when computer/server is turned on
130         * automatic restore when tmux is started
132         Together, these features enable uninterrupted tmux usage. No matter the
133         computer or server restarts, if the machine is on, tmux will be there how
134         you left it off the last time it was used.
135       '';
136       license = lib.licenses.mit;
137       platforms = lib.platforms.unix;
138       maintainers = with lib.maintainers; [ ronanmacf ];
139     };
140   };
142   copy-toolkit = mkTmuxPlugin {
143     pluginName = "copy-toolkit";
144     rtpFilePath = "copytk.tmux";
145     version = "2021-12-20";
146     src = fetchFromGitHub {
147       owner = "CrispyConductor";
148       repo = "tmux-copy-toolkit";
149       rev = "c80c2c068059fe04f840ea9f125c21b83cb6f81f";
150       hash = "sha256-cLeOoJ+4MF8lSpwy5lkcPakvB3cpgey0RfLbVTwERNk=";
151     };
152     postInstall = ''
153       sed -i -e 's|python3 |${pkgs.python3}/bin/python3 |g' $target/copytk.tmux
154       sed -i -e 's|python3|${pkgs.python3}/bin/python3|g;s|/bin/bash|${pkgs.bash}/bin/bash|g;s|/bin/cat|${pkgs.coreutils}/bin/cat|g' $target/copytk.py
155     '';
156     meta = {
157       homepage = "https://github.com/CrispyConductor/tmux-copy-toolkit";
158       description = "Various copy-mode tools";
159       license = lib.licenses.mit;
160       platforms = lib.platforms.unix;
161       maintainers = with lib.maintainers; [ deejayem sedlund ];
162     };
163   };
165   copycat = mkTmuxPlugin {
166     pluginName = "copycat";
167     version = "unstable-2020-01-09";
168     src = fetchFromGitHub {
169       owner = "tmux-plugins";
170       repo = "tmux-copycat";
171       rev = "77ca3aab2aed8ede3e2b941079b1c92dd221cf5f";
172       sha256 = "1bchwzhai8k5rk32n4lrmh56rw944jqxr8imjk74hyaa7bbn81ds";
173     };
174   };
176   cpu = mkTmuxPlugin {
177     pluginName = "cpu";
178     version = "unstable-2023-01-06";
179     src = fetchFromGitHub {
180       owner = "tmux-plugins";
181       repo = "tmux-cpu";
182       rev = "98d787191bc3e8f19c3de54b96ba1caf61385861";
183       sha256 = "sha256-ymmCI6VYvf94Ot7h2GAboTRBXPIREP+EB33+px5aaJk=";
184     };
185   };
187   ctrlw = mkTmuxPlugin rec {
188     pluginName = "ctrlw";
189     version = "0.1.1";
190     src = fetchFromGitHub {
191       owner = "eraserhd";
192       repo = "tmux-ctrlw";
193       rev = "v${version}";
194       sha256 = "1kv5pqfjczd6z7i9jf6j5xmcai50l9bn5p2p1w1l5fi6cj8cz1k1";
195     };
196   };
198   dracula = mkTmuxPlugin rec {
199     pluginName = "dracula";
200     version = "2.3.0";
201     src = fetchFromGitHub {
202       owner = "dracula";
203       repo = "tmux";
204       rev = "v${version}";
205       sha256 = "IrNDBRopg9lgN5AfeXbhhh+uXiWQD2bjS1sNOgOJsu4=";
206     };
207     meta = with lib; {
208       homepage = "https://draculatheme.com/tmux";
209       description = "Feature packed Dracula theme for tmux!";
210       license = licenses.mit;
211       platforms = platforms.unix;
212       maintainers = with maintainers; [ ethancedwards8 ];
213     };
214   };
216   extrakto = mkTmuxPlugin {
217     pluginName = "extrakto";
218     version = "0-unstable-2024-08-25";
219     src = fetchFromGitHub {
220       owner = "laktak";
221       repo = "extrakto";
222       rev = "bf9e666f2a6a8172ebe99fff61b574ba740cffc2";
223       sha256 = "sha256-kIhJKgo1BDTeFyAPa//f/TrhPfV9Rfk9y4qMhIpCydk=";
224     };
225     nativeBuildInputs = [ pkgs.makeWrapper ];
226     buildInputs = [ pkgs.python3 ];
227     postInstall = ''
228      patchShebangs extrakto.py extrakto_plugin.py
230       wrapProgram $target/scripts/open.sh \
231         --prefix PATH : ${ with pkgs; lib.makeBinPath
232           [ fzf xclip wl-clipboard ]
233         }
234     '';
235     meta = {
236       homepage = "https://github.com/laktak/extrakto";
237       description = "Fuzzy find your text with fzf instead of selecting it by hand ";
238       license = lib.licenses.mit;
239       platforms = lib.platforms.unix;
240       maintainers = with lib.maintainers; [ kidd fnune ];
241     };
242   };
244   fingers = pkgs.callPackage ./tmux-fingers {
245     inherit mkTmuxPlugin;
246   };
248   fpp = mkTmuxPlugin {
249     pluginName = "fpp";
250     version = "unstable-2016-03-08";
251     src = fetchFromGitHub {
252       owner = "tmux-plugins";
253       repo = "tmux-fpp";
254       rev = "ca125d5a9c80bb156ac114ac3f3d5951a795c80e";
255       sha256 = "1b89s6mfzifi7s5iwf22w7niddpq28w48nmqqy00dv38z4yga5ws";
256     };
257     postInstall = ''
258       sed -i -e 's|fpp |${pkgs.fpp}/bin/fpp |g' $target/fpp.tmux
259     '';
260   };
262   fuzzback = mkTmuxPlugin {
263     pluginName = "fuzzback";
264     version = "unstable-2022-11-21";
265     src = fetchFromGitHub {
266       owner = "roosta";
267       repo = "tmux-fuzzback";
268       rev = "bfd9cf0ef1c35488f0080f0c5ca4fddfdd7e18ec";
269       sha256 = "w788xDBkfiLdUVv1oJi0YikFPqVk6LiN6PDfHu8on5E=";
270     };
271     nativeBuildInputs = [ pkgs.makeWrapper ];
272     postInstall = ''
273       for f in fuzzback.sh preview.sh supported.sh; do
274         chmod +x $target/scripts/$f
275         wrapProgram $target/scripts/$f \
276           --prefix PATH : ${with pkgs; lib.makeBinPath [ coreutils fzf gawk gnused ]}
277       done
278     '';
279     meta = {
280       homepage = "https://github.com/roosta/tmux-fuzzback";
281       description = "Fuzzy search for terminal scrollback";
282       license = lib.licenses.mit;
283       platforms = lib.platforms.unix;
284       maintainers = with lib.maintainers; [ deejayem ];
285     };
286   };
288   fzf-tmux-url = mkTmuxPlugin {
289     pluginName = "fzf-tmux-url";
290     rtpFilePath = "fzf-url.tmux";
291     version = "unstable-2024-04-14";
292     src = fetchFromGitHub {
293       owner = "wfxr";
294       repo = "tmux-fzf-url";
295       rev = "28ed7ce3c73a328d8463d4f4aaa6ccb851e520fa";
296       hash = "sha256-tl0SjG/CeolrN7OIHj6MgkB9lFmFgEuJevsSuwVs+78=";
297     };
298     meta = with lib; {
299       homepage = "https://github.com/wfxr/tmux-fzf-url";
300       description = "Quickly open urls on your terminal screen!";
301       license = licenses.mit;
302       platforms = platforms.unix;
303     };
304   };
306   gruvbox = mkTmuxPlugin {
307     pluginName = "gruvbox";
308     rtpFilePath = "gruvbox-tpm.tmux";
309     version = "unstable-2022-04-19";
310     src = fetchFromGitHub {
311       owner = "egel";
312       repo = "tmux-gruvbox";
313       rev = "3f9e38d7243179730b419b5bfafb4e22b0a969ad";
314       sha256 = "1l0kq77rk3cbv0rvh7bmfn90vvqqmywn9jk6gbl9mg3qbynq5wcf";
315     };
316   };
318   jump = mkTmuxPlugin {
319     pluginName = "jump";
320     version = "2020-06-26";
321     rtpFilePath = "tmux-jump.tmux";
322     src = fetchFromGitHub {
323       owner = "schasse";
324       repo = "tmux-jump";
325       rev = "416f613d3eaadbe1f6f9eda77c49430527ebaffb";
326       sha256 = "1xbzdyhsgaq2in0f8f491gwjmx6cxpkf2c35d2dk0kg4jfs505sz";
327     };
328     postInstall = ''
329       sed -i -e 's|ruby|${pkgs.ruby}/bin/ruby|g' $target/scripts/tmux-jump.sh
330     '';
331     meta = with lib; {
332       homepage = "https://github.com/schasse/tmux-jump";
333       description = "Vimium/Easymotion like navigation for tmux";
334       license = licenses.gpl3;
335       platforms = platforms.unix;
336       maintainers = with maintainers; [ arnarg ];
337     };
338   };
340   logging = mkTmuxPlugin {
341     pluginName = "logging";
342     version = "unstable-2019-04-19";
343     src = fetchFromGitHub {
344       owner = "tmux-plugins";
345       repo = "tmux-logging";
346       rev = "b085ad423b5d59a2c8b8d71772352e7028b8e1d0";
347       sha256 = "0p0sawysalhi8k2a5hdxniqx6kb24kd8rnvfzkjqigzid5ik37js";
348     };
349   };
351   mode-indicator = mkTmuxPlugin rec {
352     pluginName = "mode-indicator";
353     version = "unstable-2021-10-01";
354     src = fetchFromGitHub {
355       owner = "MunifTanjim";
356       repo = "tmux-mode-indicator";
357       rev = "11520829210a34dc9c7e5be9dead152eaf3a4423";
358       sha256 = "sha256-hlhBKC6UzkpUrCanJehs2FxK5SoYBoiGiioXdx6trC4=";
359     };
360     meta = with lib; {
361       homepage = "https://github.com/MunifTanjim/tmux-mode-indicator";
362       description = "Plugin that displays prompt indicating currently active Tmux mode";
363       license = licenses.mit;
364       platforms = platforms.unix;
365       maintainers = with maintainers; [ aacebedo ];
366     };
367   };
369   net-speed = mkTmuxPlugin {
370     pluginName = "net-speed";
371     version = "unstable-2018-12-02";
372     src = fetchFromGitHub {
373       owner = "tmux-plugins";
374       repo = "tmux-net-speed";
375       rev = "58abb615971cb617821e2e7e41c660334f55a92d";
376       sha256 = "1aj06gdhzcxsydjzf21n9kyxigwf38kh2rg8hh7gnjk260ydqlrc";
377     };
378   };
380   nord = mkTmuxPlugin {
381     pluginName = "nord";
382     version = "0.3.0-unstable-2023-03-03";
383     src = pkgs.fetchFromGitHub {
384       owner = "nordtheme";
385       repo = "tmux";
386       rev = "f7b6da07ab55fe32ee5f7d62da56d8e5ac691a92";
387       hash = "sha256-mcmVYNWOUoQLiu4eM/EUudRg67Gcou13xuC6zv9aMKA=";
388     };
389     meta = {
390       homepage = "https://www.nordtheme.com/ports/tmux";
391       description = "Nord Tmux theme with plugin support";
392       longDescription =
393         ''
394           > An arctic, north-bluish clean and elegant tmux theme.
395           > Designed for a fluent and clear workflow with support for third-party plugins.
397           This plugin requires that tmux be used with a Nord terminal emulator
398           theme in order to work properly.
399       '';
400       license = lib.licenses.mit;
401       maintainers = [ lib.maintainers.sigmasquadron ];
402     };
403   };
405   maildir-counter = mkTmuxPlugin {
406     pluginName = "maildir-counter";
407     version = "unstable-2016-11-25";
408     src = fetchFromGitHub {
409       owner = "tmux-plugins";
410       repo = "tmux-maildir-counter";
411       rev = "9415f0207e71e37cbd870c9443426dbea6da78b9";
412       sha256 = "0dwvqhiv9bjwr01hsi5c57n55jyv5ha5m5q1aqgglf4wyhbnfms4";
413     };
414   };
416   online-status = mkTmuxPlugin {
417     pluginName = "online-status";
418     version = "unstable-2018-11-30";
419     src = fetchFromGitHub {
420       owner = "tmux-plugins";
421       repo = "tmux-online-status";
422       rev = "ea86704ced8a20f4a431116aa43f57edcf5a6312";
423       sha256 = "1hy3vg8v2sir865ylpm2r4ip1zgd4wlrf24jbwh16m23qdcvc19r";
424     };
425   };
427   open = mkTmuxPlugin {
428     pluginName = "open";
429     version = "unstable-2019-12-02";
430     src = fetchFromGitHub {
431       owner = "tmux-plugins";
432       repo = "tmux-open";
433       rev = "cedb4584908bd8458fadc8d3e64101d3cbb48d46";
434       sha256 = "10s0xdhmg0dhpj13ybcq72pw3xgb2dq5v5h2mwidzqyh9g17wndh";
435     };
436   };
438   onedark-theme = mkTmuxPlugin {
439     pluginName = "onedark-theme";
440     rtpFilePath = "tmux-onedark-theme.tmux";
441     version = "unstable-2020-06-07";
442     src = fetchFromGitHub {
443       owner = "odedlaz";
444       repo = "tmux-onedark-theme";
445       rev = "3607ef889a47dd3b4b31f66cda7f36da6f81b85c";
446       sha256 = "19jljshwp2p83b634cd1mw69091x42jj0dg40ipw61qy6642h2m5";
447     };
448   };
450   pain-control = mkTmuxPlugin {
451     pluginName = "pain-control";
452     version = "unstable-2020-02-18";
453     src = fetchFromGitHub {
454       owner = "tmux-plugins";
455       repo = "tmux-pain-control";
456       rev = "2db63de3b08fc64831d833240749133cecb67d92";
457       sha256 = "0w7a6n4n86ysiqcqj12j2hg9r5fznvbp3dz8pzas9q1k3avlk0zk";
458     };
459   };
461   pass = mkTmuxPlugin {
462     pluginName = "pass";
463     version = "0-unstable-2020-02-28";
464     rtpFilePath = "plugin.tmux";
465     src = pkgs.fetchFromGitHub {
466       owner = "rafi";
467       repo = "tmux-pass";
468       rev = "76b1c98911d56928063a41bc93a2d9e81818ef4c";
469       sha256 = "sha256-bamz4IZrozo5R7jt+z7YKyrogawPqsZ9cTJi9osjVoA=";
470     };
472     nativeBuildInputs = [ pkgs.makeWrapper ];
473     postInstall = ''
474       rm $target/README.md
475       rm -r $target/test
477       wrapProgram $target/scripts/main.sh \
478         --prefix PATH : ${with pkgs; lib.makeBinPath ( [
479           findutils fzf gnugrep gnused ncurses pkgs.pass tmux
480         ] )}
481     '';
483     meta = with lib; {
484       description = "Password-store browser using fzf in tmux";
485       homepage = "https://github.com/rafi/tmux-pass";
486       license = licenses.unlicense;
487     };
488   };
490   plumb = mkTmuxPlugin rec {
491     pluginName = "plumb";
492     version = "0.1.1";
493     src = fetchFromGitHub {
494       owner = "eraserhd";
495       repo = "tmux-plumb";
496       rev = "v${version}";
497       sha256 = "1c6k4fdl0az9811r6k164mgd4w5la75xr6x7nabmy046xc0z5i2r";
498     };
499     postInstall = ''
500       sed -i -e 's,9 plumb,${pkgs.plan9port}/bin/9 plumb,' $target/scripts/plumb
501     '';
502   };
504   power-theme = mkTmuxPlugin {
505     pluginName = "power";
506     rtpFilePath = "tmux-power.tmux";
507     version = "unstable-2024-05-12";
508     src = pkgs.fetchFromGitHub {
509       owner = "wfxr";
510       repo = "tmux-power";
511       rev = "16bbde801378a70512059541d104c5ae35be32b9";
512       hash = "sha256-IyYQyIONMnVBwhhcI3anOPxKpv2TfI2KZgJ5o5JtZ8I=";
513     };
514     meta = with lib; {
515       description = "Tmux powerline theme";
516       homepage = "https://github.com/wfxr/tmux-power";
517       license = licenses.mit;
518       platforms = platforms.unix;
519     };
520   };
522   prefix-highlight = mkTmuxPlugin {
523     pluginName = "prefix-highlight";
524     version = "unstable-2021-03-30";
525     src = fetchFromGitHub {
526       owner = "tmux-plugins";
527       repo = "tmux-prefix-highlight";
528       rev = "15acc6172300bc2eb13c81718dc53da6ae69de4f";
529       sha256 = "08rkflfnynxgv2s26b33l199h6xcqdfmlqbyqa1wkw7h85br3dgl";
530     };
531   };
533   resurrect = mkTmuxPlugin {
534     pluginName = "resurrect";
535     version = "unstable-2022-05-01";
536     src = fetchFromGitHub {
537       owner = "tmux-plugins";
538       repo = "tmux-resurrect";
539       rev = "ca6468e2deef11efadfe3a62832ae67742505432";
540       sha256 = "0d7jg5dy4jq64679rf2zqmqbvgiqvpcj5jxfljk7d7y86dnqhj3n";
541     };
542     meta = {
543       homepage = "https://github.com/tmux-plugins/tmux-resurrect";
544       description = "Restore tmux environment after system restart";
545       longDescription =
546         ''
547           This plugin goes to great lengths to save and restore all the details
548           from your tmux environment. Here's what's been taken care of:
550           * all sessions, windows, panes and their order
551           * current working directory for each pane
552           * exact pane layouts within windows (even when zoomed)
553           * active and alternative session
554           * active and alternative window for each session
555           * windows with focus
556           * active pane for each window
557           * "grouped sessions" (useful feature when using tmux with multiple monitors)
558           * programs running within a pane! More details in the restoring programs doc.
560           Optional:
561           * restoring vim and neovim sessions
562           * restoring pane contents
563       '';
564       license = lib.licenses.mit;
565       platforms = lib.platforms.unix;
566       maintainers = with lib.maintainers; [ ronanmacf ];
567     };
568   };
570   rose-pine = mkTmuxPlugin {
571     pluginName = "rose-pine";
572     version = "unstable-2024-01-08";
573     rtpFilePath = "rose-pine.tmux";
574     src = fetchFromGitHub {
575       owner = "rose-pine";
576       repo = "tmux";
577       rev = "dd6d01338ac4afeb96542dcf24e4a7fe179b69e6";
578       sha256 = "sha256-Tccb4VjdotOSw7flJV4N0H4557NxRhXiCecZBPU9ICQ=";
579     };
580     meta = {
581       homepage = "https://github.com/rose-pine/tmux";
582       description = "Rosé Pine theme for tmux";
583       license = lib.licenses.mit;
584     };
585   };
587   sensible = mkTmuxPlugin {
588     pluginName = "sensible";
589     version = "unstable-2017-09-05";
590     src = fetchFromGitHub {
591       owner = "tmux-plugins";
592       repo = "tmux-sensible";
593       rev = "e91b178ff832b7bcbbf4d99d9f467f63fd1b76b5";
594       sha256 = "1z8dfbwblrbmb8sgb0k8h1q0dvfdz7gw57las8nwd5gj6ss1jyvx";
595     };
596     postInstall = lib.optionalString stdenv.hostPlatform.isDarwin ''
597       sed -e 's:reattach-to-user-namespace:${pkgs.reattach-to-user-namespace}/bin/reattach-to-user-namespace:g' -i $target/sensible.tmux
598     '';
599   };
601   session-wizard = mkTmuxPlugin rec {
602     pluginName = "session-wizard";
603     rtpFilePath = "session-wizard.tmux";
604     version = "1.3.1";
605     src = pkgs.fetchFromGitHub {
606       owner = "27medkamal";
607       repo = "tmux-session-wizard";
608       rev = "V${version}";
609       sha256 = "sha256-nJaC5aX+cR/+ks3I/lW/tUnVG0CrEYfsIjPDisgMrTE=";
610     };
611     meta = with lib; {
612       homepage = "https://github.com/27medkamal/tmux-session-wizard";
613       description = "Tmux plugin for creating and switching between sessions based on recently accessed directories";
614       longDescription = ''
615         Session Wizard is using fzf and zoxide to do all the magic. Features:
616         * Creating a new session from a list of recently accessed directories
617         * Naming a session after a folder/project
618         * Switching sessions
619         * Viewing current or creating new sessions in one popup
620       '';
621       license = licenses.mit;
622       platforms = platforms.unix;
623       maintainers = with maintainers; [ mandos ];
624     };
625     nativeBuildInputs = [ pkgs.makeWrapper ];
626     postInstall = ''
627       for f in .gitignore Dockerfile flake.* scripts tests; do
628         rm -rf $target/$f
629       done
630       substituteInPlace $target/session-wizard.tmux --replace  \$CURRENT_DIR $target
631       wrapProgram $target/bin/t \
632         --prefix PATH : ${with pkgs; lib.makeBinPath ([ fzf zoxide coreutils gnugrep gnused ])}
633     '';
634   };
636   sessionist = mkTmuxPlugin {
637     pluginName = "sessionist";
638     version = "unstable-2017-12-03";
639     src = fetchFromGitHub {
640       owner = "tmux-plugins";
641       repo = "tmux-sessionist";
642       rev = "09ec86be38eae98ffc27bd0dde605ed10ae0dc89";
643       sha256 = "030q2mmj8akbc26jnqn8n7fckg1025p0ildx4wr401b6p1snnlw4";
644     };
645   };
647   sidebar = mkTmuxPlugin {
648     pluginName = "sidebar";
649     version = "unstable-2018-11-30";
650     src = fetchFromGitHub {
651       owner = "tmux-plugins";
652       repo = "tmux-sidebar";
653       rev = "aacbdb45bc5ab69db448a72de4155d0b8dbac677";
654       sha256 = "1bp90zbv19kbbiik0bgb893ybss1jqsnk3353a631993xjwsih7c";
655     };
656   };
658   sysstat = mkTmuxPlugin {
659     pluginName = "sysstat";
660     version = "unstable-2017-12-12";
661     src = fetchFromGitHub {
662       owner = "samoshkin";
663       repo = "tmux-plugin-sysstat";
664       rev = "29e150f403151f2341f3abcb2b2487a5f011dd23";
665       sha256 = "013mv9p6r2r0ls3p60l8hdad4hm8niv3wr27vgm925gxmibi4hyq";
666     };
667   };
669   tilish = mkTmuxPlugin {
670     pluginName = "tilish";
671     version = "unstable-2023-09-20";
672     src = fetchFromGitHub {
673       owner = "jabirali";
674       repo = "tmux-tilish";
675       rev = "22f7920837d827dc6cb31143ea916afa677c24c1";
676       sha256 = "wP3c+p/DM6ve7GUhi0QEzggct7NS4XUa78sVQFSKrfo=";
677     };
679     meta = with lib; {
680       homepage = "https://github.com/jabirali/tmux-tilish";
681       description = "Plugin which makes tmux work and feel like i3wm";
682       license = licenses.mit;
683       platforms = platforms.unix;
684       maintainers = with maintainers; [ arnarg ];
685     };
686   };
688   tokyo-night-tmux = mkTmuxPlugin {
689     pluginName = "tokyo-night-tmux";
690     rtpFilePath = "tokyo-night.tmux";
691     version = "1.5.3";
692     src = pkgs.fetchFromGitHub {
693       owner = "janoamaral";
694       repo = "tokyo-night-tmux";
695       rev = "d34f1487b4a644b13d8b2e9a2ee854ae62cc8d0e";
696       hash = "sha256-3rMYYzzSS2jaAMLjcQoKreE0oo4VWF9dZgDtABCUOtY=";
697     };
698     meta = with lib; {
699       homepage = "https://github.com/janoamaral/tokyo-night-tmux";
700       description = "A clean, dark Tmux theme that celebrates the lights of Downtown Tokyo at night.";
701       license = licenses.mit;
702       platforms = platforms.unix;
703       maintainers = with maintainers; [ redyf ];
704     };
705   };
707   tmux-colors-solarized = mkTmuxPlugin {
708     pluginName = "tmuxcolors";
709     version = "unstable-2019-07-14";
710     src = fetchFromGitHub {
711       owner = "seebi";
712       repo = "tmux-colors-solarized";
713       rev = "e5e7b4f1af37f8f3fc81ca17eadee5ae5d82cd09";
714       sha256 = "1l3i82abzi4b395cgdsjg7lcfaq15kyyhijwvrgchzxi95z3hl4x";
715     };
716   };
718   tmux-floax = mkTmuxPlugin {
719     pluginName = "tmux-floax";
720     rtpFilePath = "floax.tmux";
721     version = "0-unstable-2024-07-24";
722     src = fetchFromGitHub {
723       owner = "omerxx";
724       repo = "tmux-floax";
725       rev = "46c0a6a8c3cf79b83d1b338f547acbbd1d306301";
726       hash = "sha256-bALZfVWcoAzcTeWwkBHhi7TzUQJicOBTNdeJh3O/Bj8=";
727     };
728     meta = {
729       description = "Floating pane for Tmux";
730       homepage = "https://github.com/omerxx/tmux-floax";
731       license = lib.licenses.gpl3Only;
732       maintainers = with lib.maintainers; [ redyf ];
733       mainProgram = "tmux-floax";
734       platforms = lib.platforms.all;
735     };
736   };
738   tmux-fzf = mkTmuxPlugin {
739     pluginName = "tmux-fzf";
740     rtpFilePath = "main.tmux";
741     version = "unstable-2023-10-24";
742     src = fetchFromGitHub {
743       owner = "sainnhe";
744       repo = "tmux-fzf";
745       rev = "d62b6865c0e7c956ad1f0396823a6f34cf7452a7";
746       hash = "sha256-hVkSQYvBXrkXbKc98V9hwwvFp6z7/mX1K4N3N9j4NN4=";
747     };
748     postInstall = ''
749       find $target -type f -print0 | xargs -0 sed -i -e 's|fzf |${pkgs.fzf}/bin/fzf |g'
750       find $target -type f -print0 | xargs -0 sed -i -e 's|sed |${pkgs.gnused}/bin/sed |g'
751       find $target -type f -print0 | xargs -0 sed -i -e 's|tput |${pkgs.ncurses}/bin/tput |g'
752     '';
753     meta = {
754       homepage = "https://github.com/sainnhe/tmux-fzf";
755       description = "Use fzf to manage your tmux work environment! ";
756       longDescription =
757         ''
758         Features:
759         * Manage sessions (attach, detach*, rename, kill*).
760         * Manage windows (switch, link, move, swap, rename, kill*).
761         * Manage panes (switch, break, join*, swap, layout, kill*, resize).
762         * Multiple selection (support for actions marked by *).
763         * Search commands and append to command prompt.
764         * Search key bindings and execute.
765         * User menu.
766         * Popup window support.
767       '';
768       license = lib.licenses.mit;
769       platforms = lib.platforms.unix;
770       maintainers = with lib.maintainers; [ kyleondy ];
771     };
772   };
774   tmux-powerline = mkTmuxPlugin {
775     pluginName = "powerline";
776     version = "3.0.0";
777     src = fetchFromGitHub {
778       owner = "erikw";
779       repo = "tmux-powerline";
780       rev = "2480e5531e0027e49a90eaf540f973e624443937";
781       hash = "sha256-25uG7OI8OHkdZ3GrTxG1ETNeDtW1K+sHu2DfJtVHVbk=";
782     };
783     rtpFilePath = "main.tmux";
784     meta = {
785       homepage = "https://github.com/erikw/tmux-powerline";
786       description = "Empowering your tmux (status bar) experience!";
787       longDescription = "A tmux plugin giving you a hackable status bar consisting of dynamic & beautiful looking powerline segments, written purely in bash.";
788       license = lib.licenses.bsd3;
789       platforms = lib.platforms.unix;
790       maintainers = with lib.maintainers; [ thomasjm ];
791     };
792   };
794   tmux-thumbs = pkgs.callPackage ./tmux-thumbs {
795     inherit mkTmuxPlugin;
796   };
798   t-smart-tmux-session-manager = mkTmuxPlugin rec {
799     pluginName = "t-smart-tmux-session-manager";
800     version = "2.8.0";
801     rtpFilePath = "t-smart-tmux-session-manager.tmux";
802     src = pkgs.fetchFromGitHub {
803       owner = "joshmedeski";
804       repo = "t-smart-tmux-session-manager";
805       rev = "v${version}";
806       sha256 = "sha256-EMDEEIWJ+XFOk0WsQPAwj9BFBVDNwFUCyd1ScceqKpc=";
807     };
808     nativeBuildInputs = [ pkgs.makeWrapper ];
809     postInstall = ''
810       wrapProgram $out/share/tmux-plugins/t-smart-tmux-session-manager/bin/t \
811           --prefix PATH : ${with pkgs; lib.makeBinPath (
812             [ pkgs.fzf pkgs.zoxide ]
813           )}
815       find $target -type f -print0 | xargs -0 sed -i -e 's|fzf |${pkgs.fzf}/bin/fzf |g'
816       find $target -type f -print0 | xargs -0 sed -i -e 's|zoxide |${pkgs.zoxide}/bin/zoxide |g'
817     '';
818   };
820   urlview = mkTmuxPlugin {
821     pluginName = "urlview";
822     version = "unstable-2016-01-06";
823     src = fetchFromGitHub {
824       owner = "tmux-plugins";
825       repo = "tmux-urlview";
826       rev = "b84c876cffdd22990b4ab51247e795cbd7813d53";
827       sha256 = "1jp4jq57cn116b3i34v6yy69izd8s6mp2ijr260cw86g0470k0fn";
828     };
829     postInstall = ''
830       sed -i -e '14,20{s|extract_url|${pkgs.extract_url}/bin/extract_url|g}' $target/urlview.tmux
831     '';
832   };
834   vim-tmux-focus-events = mkTmuxPlugin {
835     pluginName = "vim-tmux-focus-events";
836     version = "unstable-2020-10-05";
837     src = fetchFromGitHub {
838       owner = "tmux-plugins";
839       repo = "vim-tmux-focus-events";
840       rev = "a568192ca0de4ca0bd7b3cd0249aad491625c941";
841       sha256 = "130l73v18md95djkc4s9d0fr018f8f183sjcgy7dgldwdaxlqdi1";
842     };
844     meta = with lib; {
845       homepage = "https://github.com/tmux-plugins/vim-tmux-focus-events";
846       description = "Makes FocusGained and FocusLost autocommand events work in vim when using tmux";
847       license = licenses.mit;
848       platforms = platforms.unix;
849       maintainers = with maintainers; [ ronanmacf ];
850     };
851   };
853   vim-tmux-navigator = mkTmuxPlugin {
854     pluginName = "vim-tmux-navigator";
855     rtpFilePath = "vim-tmux-navigator.tmux";
856     version = "unstable-2022-08-21";
857     src = fetchFromGitHub {
858       owner = "christoomey";
859       repo = "vim-tmux-navigator";
860       rev = "afb45a55b452b9238159047ce7c6e161bd4a9907";
861       hash = "sha256-8A+Yt9uhhAP76EiqUopE8vl7/UXkgU2x000EOcF7pl0=";
862     };
863   };
865   weather = mkTmuxPlugin {
866     pluginName = "weather";
867     version = "unstable-2020-02-08";
868     src = fetchFromGitHub {
869       owner = "xamut";
870       repo = "tmux-weather";
871       rev = "28a5fbe75bb25a408193d454304e28ddd75e9338";
872       hash = "sha256-of9E/npEsF1JVc9ttwrbC5WkIAwCNBJAgTfExfj79i4=";
873     };
875     meta = with lib; {
876       homepage = "https://github.com/xamut/tmux-weather";
877       description = "Shows weather in the status line";
878       license = licenses.mit;
879       platforms = platforms.unix;
880       maintainers = with maintainers; [ jfvillablanca ];
881     };
882   };
884   yank = mkTmuxPlugin {
885     pluginName = "yank";
886     version = "unstable-2023-07-19";
887     src = fetchFromGitHub {
888       owner = "tmux-plugins";
889       repo = "tmux-yank";
890       rev = "acfd36e4fcba99f8310a7dfb432111c242fe7392";
891       sha256 = "sha256-/5HPaoOx2U2d8lZZJo5dKmemu6hKgHJYq23hxkddXpA=";
892     };
893   };
895   tmux-nova = mkTmuxPlugin rec {
896     pluginName = "tmux-nova";
897     rtpFilePath = "nova.tmux";
898     version = "1.2.0";
899     src = fetchFromGitHub {
900       owner = "o0th";
901       repo = "tmux-nova";
902       rev = "v${version}";
903       sha256 = "16llz3nlyw88lyd8mmj27i0ncyhpfjj5c1yikngf7nxcqsbjmcnh";
904     };
905     meta = with lib; {
906       homepage = "https://github.com/o0th/tmux-nova";
907       description = "tmux-nova theme";
908       license = licenses.mit;
909       platforms = platforms.unix;
910       maintainers = with maintainers; [ o0th ];
911     };
912   };
913 } // lib.optionalAttrs config.allowAliases {
914   mkDerivation = throw "tmuxPlugins.mkDerivation is deprecated, use tmuxPlugins.mkTmuxPlugin instead"; # added 2021-03-14