Compare commits

..

2 Commits

7 changed files with 79 additions and 23 deletions

View File

@ -45,7 +45,7 @@ in
mv = "mv -i"; mv = "mv -i";
cd = "z"; cd = "z";
f = "fzf --multi --bind \"enter:become($EDITOR {+})\""; f = ''fzf --multi --bind "enter:become($EDITOR {+})" --preview "bat --color=always --style=header,grid --line-range :500 {+}"'';
nixos-switch = nom-system-command "sudo nixos-rebuild switch --flake ~/.dotfiles"; nixos-switch = nom-system-command "sudo nixos-rebuild switch --flake ~/.dotfiles";
nixos-boot = nom-system-command "sudo nixos-rebuild boot --flake ~/.dotfiles"; nixos-boot = nom-system-command "sudo nixos-rebuild boot --flake ~/.dotfiles";
@ -154,6 +154,7 @@ in
enable = true; enable = true;
defaultOptions = [ defaultOptions = [
"--height 50%" "--height 50%"
"--bind alt-j:preview-down,alt-k:preview-up"
]; ];
}; };
zoxide.enable = true; zoxide.enable = true;

View File

@ -41,32 +41,18 @@ let
''; '';
}; };
tmux-sessionizer = pkgs.writeShellApplication { tmux-sessionizer = pkgs.writeFishApplication {
name = "ts"; name = "ts";
runtimeInputs = with pkgs; [ tmux findutils coreutils procps fd fzf ]; runtimeInputs = with pkgs; [ tmux findutils coreutils procps fd fzf1 tmux-switch ];
text = '' text = readFile ./tmux-sessionizer/script.fish;
#!/usr/bin/env bash completions = readFile ./tmux-sessionizer/completions.fish;
selected=$(fd -HIg '.git' ~/ --min-depth 1 --max-depth 5 --type d --prune --exec dirname {} | ${getExe fzf1} "$*")
selected_name=$(basename "$selected" | tr . _)
if ! tmux has-session -t="$selected_name" 2> /dev/null; then
tmux new-session -ds "$selected_name" -c "$selected"
fi
${getExe tmux-switch} "$selected_name"
'';
}; };
tmux-attach = pkgs.writeShellApplication { tmux-attach = pkgs.writeFishApplication {
name = "ta"; name = "ta";
runtimeInputs = with pkgs; [ tmux ]; runtimeInputs = with pkgs; [ tmux fzf1 tmux-switch ];
text = '' text = readFile ./tmux-attach/script.fish;
#!/usr/bin/env bash completions = readFile ./tmux-attach/completions.fish;
selected=$(tmux list-sessions -F '#{session_name}' | ${getExe fzf1} "$*")
${getExe tmux-switch} "$selected"
'';
}; };
in in

View File

@ -0,0 +1 @@
complete -c ta -f -a '(tmux list-sessions -F "#{session_name}" 2>/dev/null)'

View File

@ -0,0 +1,5 @@
set selected (tmux list-sessions -F '#{session_name}' 2>/dev/null | fzf1 $argv)
if not test -n "$selected"
exit 1
end
tmux-switch "$selected"

View File

@ -0,0 +1 @@
complete -c ts -f -a '(fd -HIg '.git' ~/ --min-depth 1 --max-depth 5 --type d --prune --exec realpath "{}/.." | xargs -I{} basename {} | string replace "." "")'

View File

@ -0,0 +1,13 @@
set selected (fd -HIg '.git' ~/ --min-depth 1 --max-depth 5 --type d --prune --exec dirname {} | fzf1 $argv)
set selected_name (basename $selected 2>/dev/null | string replace "." "_")
if not test -n "$selected_name"
exit 1
end
if ! tmux has-session -t $selected_name 2> /dev/null
tmux new-session -ds $selected_name -c $selected
end
tmux-switch $selected_name

49
overlays/builders.nix Normal file
View File

@ -0,0 +1,49 @@
_:
final: _:
with final.lib;
{
writeFishApplication =
{ name
, text
, completions ? null
, runtimeInputs ? [ ]
, checkPhase ? null
}:
let
fishFile = destination: content: final.writeTextFile {
inherit name destination;
executable = true;
allowSubstitutes = true;
preferLocalBuild = false;
text = ''
#!${getExe final.fish}
'' + optionalString (runtimeInputs != [ ]) ''
export PATH="${makeBinPath runtimeInputs}:$PATH"
'' + ''
${content}
'';
checkPhase =
if checkPhase == null then ''
runHook preCheck
${getExe final.fish} -n "$target"
runHook postCheck
''
else checkPhase;
};
script = fishFile "/bin/${name}" text;
completions_file = fishFile "/share/fish/vendor_completions.d/${name}.fish" completions;
in
final.symlinkJoin {
inherit name;
paths = [
script
] ++ optional (completions != null) completions_file;
};
}