wrappers/fish: add prompt, zoxide, and ripgrep
This commit is contained in:
parent
e8161c46ac
commit
427e8bde65
3 changed files with 129 additions and 3 deletions
|
@ -24,8 +24,6 @@ in {
|
||||||
programs.direnv.enable = true;
|
programs.direnv.enable = true;
|
||||||
programs.nix-index.enable = true;
|
programs.nix-index.enable = true;
|
||||||
programs.ssh.enable = true;
|
programs.ssh.enable = true;
|
||||||
programs.zoxide.enable = true;
|
|
||||||
programs.ripgrep.enable = true;
|
|
||||||
programs.git = {
|
programs.git = {
|
||||||
enable = true;
|
enable = true;
|
||||||
difftastic.enable = true;
|
difftastic.enable = true;
|
||||||
|
|
|
@ -19,13 +19,17 @@
|
||||||
config.wrappers.fish.pathAdd;
|
config.wrappers.fish.pathAdd;
|
||||||
config-fish = pkgs.writeText "config.fish" ''
|
config-fish = pkgs.writeText "config.fish" ''
|
||||||
${path-add-lines}
|
${path-add-lines}
|
||||||
|
|
||||||
source ${./config.fish}
|
source ${./config.fish}
|
||||||
|
source ${./prompt.fish}
|
||||||
|
|
||||||
|
${lib.getExe pkgs.zoxide} init fish | source
|
||||||
'';
|
'';
|
||||||
in [
|
in [
|
||||||
"-C"
|
"-C"
|
||||||
"source ${config-fish}"
|
"source ${config-fish}"
|
||||||
];
|
];
|
||||||
|
|
||||||
pathAdd = with pkgs; [eza bat fzf];
|
pathAdd = with pkgs; [eza bat fzf ripgrep];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
124
wrappers/fish/prompt.fish
Normal file
124
wrappers/fish/prompt.fish
Normal 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
|
Loading…
Add table
Add a link
Reference in a new issue