mirror of
https://github.com/callumio/nixfiles.git
synced 2025-12-17 03:29:20 +00:00
move packages to packages folder and abstract out tmux-sessionizer
This commit is contained in:
parent
e897059004
commit
c1fb306ed1
5 changed files with 29 additions and 21 deletions
18
packages/default.nix
Normal file
18
packages/default.nix
Normal 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;
|
||||
};
|
||||
};
|
||||
}
|
||||
8
packages/tmux-sessionizer/default.nix
Normal file
8
packages/tmux-sessionizer/default.nix
Normal 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;
|
||||
}
|
||||
59
packages/tmux-sessionizer/tmux-sessionizer.sh
Executable file
59
packages/tmux-sessionizer/tmux-sessionizer.sh
Executable 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
|
||||
Loading…
Add table
Add a link
Reference in a new issue