wrappers/fish: add prompt, zoxide, and ripgrep

This commit is contained in:
Nikodem Rabuliński 2024-02-01 22:09:29 +01:00
parent e8161c46ac
commit 427e8bde65
3 changed files with 129 additions and 3 deletions

View file

@ -24,8 +24,6 @@ in {
programs.direnv.enable = true;
programs.nix-index.enable = true;
programs.ssh.enable = true;
programs.zoxide.enable = true;
programs.ripgrep.enable = true;
programs.git = {
enable = true;
difftastic.enable = true;

View file

@ -19,13 +19,17 @@
config.wrappers.fish.pathAdd;
config-fish = pkgs.writeText "config.fish" ''
${path-add-lines}
source ${./config.fish}
source ${./prompt.fish}
${lib.getExe pkgs.zoxide} init fish | source
'';
in [
"-C"
"source ${config-fish}"
];
pathAdd = with pkgs; [eza bat fzf];
pathAdd = with pkgs; [eza bat fzf ripgrep];
};
}

124
wrappers/fish/prompt.fish Normal file
View file

@ -0,0 +1,124 @@
# name: Nim
# author: Guilhem "Nim" Saurel https://github.com/nim65s/dotfiles/
function fish_prompt
set -l retc red
test $status = 0; and set retc green
set -q __fish_git_prompt_showupstream
or set -g __fish_git_prompt_showupstream auto
function _nim_prompt_wrapper
set retc $argv[1]
set -l field_name $argv[2]
set -l field_value $argv[3]
set_color normal
set_color $retc
echo -n '─'
set_color -o green
echo -n '['
set_color normal
test -n $field_name
and echo -n $field_name:
set_color $retc
echo -n $field_value
set_color -o green
echo -n ']'
end
set_color $retc
echo -n '┬─'
set_color -o green
echo -n [
if functions -q fish_is_root_user; and fish_is_root_user
set_color -o red
else
set_color -o yellow
end
echo -n $USER
set_color -o white
echo -n @
if test -z "$SSH_CLIENT"
set_color -o blue
else
set_color -o cyan
end
echo -n (prompt_hostname)
set_color -o white
echo -n :(prompt_pwd)
set_color -o green
echo -n ']'
test -n "$IN_NIX_SHELL"
and _nim_prompt_wrapper $retc '' 'nix-shell'
# Date
_nim_prompt_wrapper $retc '' (date +%X)
# Vi-mode
# The default mode prompt would be prefixed, which ruins our alignment.
function fish_mode_prompt
end
if test "$fish_key_bindings" = fish_vi_key_bindings
or test "$fish_key_bindings" = fish_hybrid_key_bindings
set -l mode
switch $fish_bind_mode
case default
set mode (set_color --bold red)N
case insert
set mode (set_color --bold green)I
case replace_one
set mode (set_color --bold green)R
echo '[R]'
case replace
set mode (set_color --bold cyan)R
case visual
set mode (set_color --bold magenta)V
end
set mode $mode(set_color normal)
_nim_prompt_wrapper $retc '' $mode
end
# Virtual Environment
set -q VIRTUAL_ENV_DISABLE_PROMPT
or set -g VIRTUAL_ENV_DISABLE_PROMPT true
set -q VIRTUAL_ENV
and _nim_prompt_wrapper $retc V (path basename "$VIRTUAL_ENV")
# git
set -l prompt_git (fish_git_prompt '%s')
test -n "$prompt_git"
and _nim_prompt_wrapper $retc G $prompt_git
# Battery status
type -q acpi
and test (acpi -a 2> /dev/null | string match -r off)
and _nim_prompt_wrapper $retc B (acpi -b | cut -d' ' -f 4-)
# New line
echo
# Background jobs
set_color normal
for job in (jobs)
set_color $retc
echo -n '│ '
set_color brown
echo $job
end
set_color normal
set_color $retc
echo -n '╰─>'
set_color -o red
echo -n '$ '
set_color normal
end