diff --git a/home/fish.nix b/home/fish.nix index 8003572..3bb9d84 100644 --- a/home/fish.nix +++ b/home/fish.nix @@ -37,6 +37,40 @@ shellInit = '' set fish_greeting ''; + + functions = { + fish_prompt = '' + set -l last_status $status + set -l normal (set_color normal) + set -l status_color (set_color brgreen) + set -l cwd_color (set_color $fish_color_cwd) + set -l vcs_color (set_color brpurple) + set -l prompt_status "" + + # Since we display the prompt on a new line allow the directory names to be longer. + set -q fish_prompt_pwd_dir_length + or set -lx fish_prompt_pwd_dir_length 0 + + # Color the prompt differently when we're root + set -l suffix '❯' + if functions -q fish_is_root_user; and fish_is_root_user + if set -q fish_color_cwd_root + set cwd_color (set_color $fish_color_cwd_root) + end + set suffix '#' + end + + # Color the prompt in red on error + if test $last_status -ne 0 + set status_color (set_color $fish_color_error) + set prompt_status $status_color "[" $last_status "]" $normal + end + + echo -s (prompt_login) ' ' $cwd_color (prompt_pwd) $vcs_color (fish_vcs_prompt) $normal ' ' $prompt_status + echo -n -s $status_color $suffix ' ' $normal + ''; + + }; }; programs.fzf.enableFishIntegration = true; diff --git a/hosts/common.nix b/hosts/common.nix index bcc2fa5..073c06b 100644 --- a/hosts/common.nix +++ b/hosts/common.nix @@ -1,4 +1,4 @@ -{pkgs, ... }: +{ pkgs, ... }: { nix = { settings = {