move packages to packages folder and abstract out tmux-sessionizer

This commit is contained in:
Callum Leslie 2024-09-08 20:55:34 +01:00
parent e897059004
commit c1fb306ed1
Signed by: cleslie
GPG key ID: D382C4AFEECEAA90
5 changed files with 29 additions and 21 deletions

18
packages/default.nix Normal file
View file

@ -0,0 +1,18 @@
{
pkgs,
inputs,
inputs',
}: {
tmux-sessionizer-cl = pkgs.callPackage ./tmux-sessionizer {};
om = inputs'.omnix.packages.default;
nixvim = inputs'.nixvim.packages.default;
agenix = inputs'.agenix.packages.default;
vaapiIntel = pkgs.vaapiIntel.override {enableHybridCodec = true;};
devour-flake = pkgs.callPackage inputs.devour-flake {};
jellyfin-ffmpeg = pkgs.jellyfin-ffmpeg.override {
ffmpeg_6-full = pkgs.ffmpeg_6-full.override {
withMfx = false;
withVpl = true;
};
};
}

View file

@ -0,0 +1,8 @@
{pkgs}: let
name = "tmux-sessionizer";
runtimeInputs = [pkgs.tmux pkgs.ghq pkgs.fzf];
text = builtins.readFile ./tmux-sessionizer.sh;
in
pkgs.writeShellApplication {
inherit name runtimeInputs text;
}

View file

@ -0,0 +1,59 @@
#!/usr/bin/env bash
pick_session() {
selected=$(ghq list -p | fzf || exit 0)
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"
exit 0
fi
if ! tmux has-session -t="$selected_name" 2>/dev/null; then
tmux new-session -ds "$selected_name" -c "$selected"
fi
tmux switch-client -t "$selected_name"
}
switch_session() {
selected=$(tmux list-sessions -F "#{session_name}" | fzf || exit 0)
if [[ -z $selected ]]; then
exit 0
fi
tmux switch-client -t "$selected"
}
selections=()
while getopts "sp" opt; do
case ${opt} in
p) selections+=("pick") ;;
s) selections+=("switch") ;;
\?)
echo "Invalid usage"
exit
;;
esac
done 2>/dev/null
case ${#selections[@]} in
1) selection=${selections[0]} ;;
*)
echo "Please make exactly one selection (-p or -s)" >&2
exit 1
;;
esac
shift $((OPTIND - 1))
case $selection in
"pick") pick_session ;;
"switch") switch_session ;;
esac