{ pkgs, config, ... }: let hmCfg = config.home-manager.users.krizej; XDG_DATA_HOME = hmCfg.xdg.dataHome; in { environment.systemPackages = [ pkgs.fish ]; programs.fish.enable = true; users.users.krizej.shell = pkgs.fish; programs.fish.promptInit = '' ${pkgs.any-nix-shell}/bin/any-nix-shell fish --info-right | source ''; home-manager.users.krizej.programs.fish = { enable = true; shellAliases = { "ls" = "eza -lhs type"; "cp" = "cp -v"; "mv" = "mv -v"; "ytmp3" = "yt-dlp -o '%(title)s.%(ext)s' -x --audio-format mp3"; "myip" = "curl ifconfig.me"; "0x0" = ''curl -F"file=@$argv" https://0x0.st''; "wget" = "${pkgs.wget}/bin/wget --hsts-file='${XDG_DATA_HOME}/wget-hsts'"; }; shellAbbrs = { "2clip" = "xclip -selection clipboard"; }; functions = { "fish_greeting" = "fortune"; "fish_prompt" = '' # name: Informative Vcs # author: Mariusz Smykula # function fish_prompt --description 'Write out the prompt' set -l last_pipestatus $pipestatus set -lx __fish_last_status $status # Export for __fish_print_pipestatus. if not set -q __fish_git_prompt_show_informative_status set -g __fish_git_prompt_show_informative_status 1 end if not set -q __fish_git_prompt_hide_untrackedfiles set -g __fish_git_prompt_hide_untrackedfiles 1 end if not set -q __fish_git_prompt_color_branch set -g __fish_git_prompt_color_branch magenta --bold end if not set -q __fish_git_prompt_showupstream set -g __fish_git_prompt_showupstream informative end if not set -q __fish_git_prompt_color_dirtystate set -g __fish_git_prompt_color_dirtystate blue end if not set -q __fish_git_prompt_color_stagedstate set -g __fish_git_prompt_color_stagedstate yellow end if not set -q __fish_git_prompt_color_invalidstate set -g __fish_git_prompt_color_invalidstate red end if not set -q __fish_git_prompt_color_untrackedfiles set -g __fish_git_prompt_color_untrackedfiles $fish_color_normal end if not set -q __fish_git_prompt_color_cleanstate set -g __fish_git_prompt_color_cleanstate green --bold end set -l color_cwd set -l suffix if functions -q fish_is_root_user; and fish_is_root_user if set -q fish_color_cwd_root set color_cwd $fish_color_cwd_root else set color_cwd $fish_color_cwd end set suffix '#' else set color_cwd $fish_color_cwd set suffix '$' end # PWD set_color $color_cwd echo -n (prompt_pwd) set_color normal printf '%s ' (fish_vcs_prompt) set -l status_color (set_color $fish_color_status) set -l statusb_color (set_color --bold $fish_color_status) set -l prompt_status (__fish_print_pipestatus "[" "]" "|" "$status_color" "$statusb_color" $last_pipestatus) echo -n $prompt_status set_color normal echo -n "$suffix " # end ''; }; }; }