Use the tmux-sessionizer from GitHub
Use the tmux-sessionizer code from GitHub instead of writing it myself and apply a patch to change the directories it uses to provide suggestions.
This commit is contained in:
parent
75efe1bf99
commit
5fd27efa50
|
@ -9,7 +9,7 @@ in
|
||||||
build-glove80 = callPackage ./build-glove80.nix { };
|
build-glove80 = callPackage ./build-glove80.nix { };
|
||||||
notes = callPackage ./notes.nix { };
|
notes = callPackage ./notes.nix { };
|
||||||
i3-battery-popup = callPackage ./i3-battery-popup.nix { };
|
i3-battery-popup = callPackage ./i3-battery-popup.nix { };
|
||||||
tmux-sessionizer = callPackage ./tmux-sessionizer.nix { };
|
tmux-sessionizer = callPackage ./tmux-sessionizer { };
|
||||||
upload-to-files = callPackage ./upload-to-files.nix { };
|
upload-to-files = callPackage ./upload-to-files.nix { };
|
||||||
|
|
||||||
vimPlugins = prev.vimPlugins // vimPlugins;
|
vimPlugins = prev.vimPlugins // vimPlugins;
|
||||||
|
|
|
@ -1,59 +0,0 @@
|
||||||
{ pkgs }:
|
|
||||||
|
|
||||||
pkgs.writeShellApplication {
|
|
||||||
name = "tmux-sessionizer";
|
|
||||||
|
|
||||||
runtimeInputs = with pkgs; [ tmux ];
|
|
||||||
|
|
||||||
text = ''
|
|
||||||
set +o nounset
|
|
||||||
|
|
||||||
# Based on https://github.com/ThePrimeagen/tmux-sessionizer.
|
|
||||||
|
|
||||||
switch_to() {
|
|
||||||
if [[ -z $TMUX ]]; then
|
|
||||||
tmux attach-session -t "$1"
|
|
||||||
else
|
|
||||||
tmux switch-client -t "$1"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
has_session() {
|
|
||||||
tmux list-sessions | grep -q "^$1:"
|
|
||||||
}
|
|
||||||
|
|
||||||
hydrate() {
|
|
||||||
if [ -f "$2/.tmux-sessionizer" ]; then
|
|
||||||
tmux send-keys -t "$1" "source $2/.tmux-sessionizer" Enter
|
|
||||||
elif [ -f "$HOME/.tmux-sessionizer" ]; then
|
|
||||||
tmux send-keys -t "$1" "source $HOME/.tmux-sessionizer" Enter
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
if [[ $# -eq 1 ]]; then
|
|
||||||
selected=$1
|
|
||||||
else
|
|
||||||
selected=$(find -L ~/ ~/Code ~/Code/personal ~/Code/os ~/Documents -mindepth 1 -maxdepth 1 -type d ! -name "*.old" | fzf)
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ -z "$selected" ]]; then
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
selected_name="$(basename "$selected" | tr . _)"
|
|
||||||
tmux_running="$(pgrep tmux)"
|
|
||||||
|
|
||||||
if [[ -z $TMUX ]] && [[ -z "$tmux_running" ]]; then
|
|
||||||
tmux new-session -s "$selected_name" -c "$selected"
|
|
||||||
hydrate "$selected_name" "$selected"
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
if ! has_session "$selected_name"; then
|
|
||||||
tmux new-session -ds "$selected_name" -c "$selected"
|
|
||||||
hydrate "$selected_name" "$selected"
|
|
||||||
fi
|
|
||||||
|
|
||||||
switch_to "$selected_name"
|
|
||||||
'';
|
|
||||||
}
|
|
15
nix/pkgs/tmux-sessionizer/configure-directories.patch
Normal file
15
nix/pkgs/tmux-sessionizer/configure-directories.patch
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
diff --git a/tmux-sessionizer b/tmux-sessionizer
|
||||||
|
index fa1bec5..4d79e0b 100755
|
||||||
|
--- a/tmux-sessionizer
|
||||||
|
+++ b/tmux-sessionizer
|
||||||
|
@@ -22,9 +22,7 @@ hydrate() {
|
||||||
|
if [[ $# -eq 1 ]]; then
|
||||||
|
selected=$1
|
||||||
|
else
|
||||||
|
- # If someone wants to make this extensible, i'll accept
|
||||||
|
- # PR
|
||||||
|
- selected=$(find ~/ ~/personal ~/personal/dev/env/.config -mindepth 1 -maxdepth 1 -type d | fzf)
|
||||||
|
+ selected=$(find -L ~/ ~/Code ~/Documents -mindepth 1 -maxdepth 1 -type d | sort | fzf)
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -z $selected ]]; then
|
27
nix/pkgs/tmux-sessionizer/default.nix
Normal file
27
nix/pkgs/tmux-sessionizer/default.nix
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
{ pkgs, ... }:
|
||||||
|
|
||||||
|
pkgs.stdenv.mkDerivation rec {
|
||||||
|
pname = "tmux-sessonizer";
|
||||||
|
version = "0.1.0";
|
||||||
|
|
||||||
|
src = pkgs.fetchFromGitHub {
|
||||||
|
owner = "theprimeagen";
|
||||||
|
repo = "tmux-sessionizer";
|
||||||
|
rev = "master";
|
||||||
|
sha256 = "bZXt9TyMU1Ed/WR0/ahMQ4oyIi6yXLKnXKYPPNBt/s4=";
|
||||||
|
};
|
||||||
|
|
||||||
|
buildInputs = with pkgs; [
|
||||||
|
bash
|
||||||
|
fzf
|
||||||
|
tmux
|
||||||
|
];
|
||||||
|
|
||||||
|
patches = [ ./configure-directories.patch ];
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p $out/bin
|
||||||
|
cp tmux-sessionizer $out/bin/tmux-sessionizer
|
||||||
|
chmod +x $out/bin/tmux-sessionizer
|
||||||
|
'';
|
||||||
|
}
|
Loading…
Reference in a new issue