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 { };
|
||||
notes = callPackage ./notes.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 { };
|
||||
|
||||
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