# ============================================================================== # ENVIRONMENT VARIABLES # ============================================================================== # Disable fish greeting set -g fish_greeting # Core settings set -gx EDITOR "/usr/local/nvim_012/bin/nvim" set -gx VISUAL "/usr/local/nvim_012/bin/nvim" set -gx MANPAGER "nvim +Man!" set -gx BROWSER firefox # set -gx TERM xterm-256color set -gx COLORTERM truecolor set -gx LANG "en_US.UTF-8" set -gx LC_ALL "en_US.UTF-8" # Development set -gx DEBUG 1 set -gx GOPATH "$HOME/.go" set -gx GOCACHE "$HOME/.go/cache" set -gx GOROOT /usr/local/go set -gx PATH /usr/local/go/bin $GOPATH/bin $PATH # Direnv direnv hook fish | source # ============================================================================== # FZF configuration # ============================================================================== set -gx FZF_DEFAULT_OPTS " --height 40% --layout=reverse --border --ansi --preview-window=down:30% --bind 'ctrl-d:preview-page-down,ctrl-u:preview-page-up' --color=fg:#ffffff,header:#f38ba8,info:#cba6ac,pointer:#f5e0dc --color=marker:#f5e0dc,fg+:#cdd6f4,prompt:#cba6ac,hl+:#f38ba8" set -gx FZF_DEFAULT_COMMAND 'fdfind --exclude={.git,.cache,.xmake,.zig-cache,build,tmp,node_modules,elpa} --type f -H' # ============================================================================== # PATH CONFIGURATION # ============================================================================== # Fish's 'fish_add_path' is smart: it checks if the dir exists and prevents duplicates. fish_add_path /var/lib/flatpak/exports/bin fish_add_path /usr/local/bin fish_add_path /usr/local/go/bin fish_add_path $GOPATH/bin fish_add_path "$HOME/bin" fish_add_path "$HOME/.local/bin" fish_add_path "$HOME/.local/share/flatpak/exports/bin" fish_add_path "$HOME/.npm-global/bin" fish_add_path "$HOME/.odin/" # ============================================================================== # ALIASES & ABBREVIATIONS # ============================================================================== # List commands alias ls='ls -lh --color=auto --group-directories-first' alias ll='ls -lAh --color=auto --group-directories-first' alias la='ls -la --color=auto --group-directories-first' alias l='ls -CF --color=auto' alias tree='tree --dirsfirst -C' # Safety aliases alias rm='rm -I --preserve-root' alias mv='mv -i' alias cp='cp -i' alias ln='ln -i' # System information alias df='df -h' alias du='du -h' alias free='free -h' alias bat='batcat --theme="gruvbox-dark" --paging=never ' # Application shortcuts alias nvim='/usr/local/nvim_012/bin/nvim' alias vim='nvim' alias vi='nvim' alias v='nvim' alias :q='exit' alias files='nemo .' alias lg='gitu' alias ldk='lazydocker' # Custom shortcuts alias reload='source ~/.config/fish/config.fish' alias p='exec ~/.local/bin/project-select' alias prj='cd ~/Projects/ && ll' alias dots='cd ~/.dotfiles' alias dotman='bash ~/.dotfiles/install.sh' alias todo='cd ~/Todo/ && nvim index.md' alias myip='curl ipinfo.io/ip; echo ""' alias lspmake='bear -- make -B' alias sub='subl . && exit' alias tc='tmux attach' alias td='tmux detach' alias db='lazysql' # Docker shortcuts alias services-up='docker compose -f /home/jason/Documents/Compose/local-services/docker-compose.yaml up -d' alias services-down='docker compose -f /home/jason/Documents/Compose/local-services/docker-compose.yaml down' ## Basic project picker using mini sessions and neovim function pp set project ( find ~/Projects -mindepth 1 -maxdepth 1 -type d | awk -F/ '{print $NF "\t" $0}' | fzf --with-nth=1 ) if test -z "$project" return end set project (echo $project | cut -f2) cd $project && /usr/local/nvim_012/bin/nvim $project end # ============================================================================== # PROMPT COLORS # ============================================================================== set -l user_color (set_color green) set -l host_color (set_color blue) set -l path_color (set_color cyan) # Fish's built-in git prompt configuration set -eg ___fish_git_prompt_char_stateseparator set -g __fish_git_prompt_show_informative_status 1 set -g __fish_git_prompt_color_branch magenta --bold set -g __fish_git_prompt_color_stagedstate yellow set -g __fish_git_prompt_color_invalidstate red set -g __fish_git_prompt_color_cleanstate green --bold set -g __fish_git_prompt_separator ' ' set -g __fish_git_prompt_char_dirtystate '+' set -g __fish_git_prompt_char_stagedstate '●' set -g __fish_git_prompt_char_untrackedfiles ''