1
0

fish.nix 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. { pkgs, ... }: {
  2. programs.fish = {
  3. enable = true;
  4. interactiveShellInit = ''
  5. set -g fish_greeting ""
  6. direnv hook fish | source
  7. '';
  8. functions = {
  9. current_git_branch = ''
  10. git symbolic-ref --quiet --short HEAD 2>/dev/null | read -l branch
  11. and printf '(%s)' $branch
  12. '';
  13. shlvl_prompt = ''
  14. if test "$SHLVL" -gt 1
  15. printf '(%d)' "$SHLVL"
  16. end
  17. '';
  18. jclone = ''
  19. git clone https://github.com/johron/$argv[1]
  20. '';
  21. nix-update = ''
  22. set -l orig_cwd (pwd)
  23. cd ~/nix-dots || return
  24. nix flake update
  25. or begin
  26. cd $orig_cwd
  27. return 1
  28. end
  29. nh os switch
  30. or begin
  31. cd $orig_cwd
  32. return 1
  33. end
  34. flatpak update -y
  35. cd $orig_cwd
  36. '';
  37. fish_prompt = ''
  38. set -g fish_prompt_pwd_dir_length 0
  39. set -l primary_color "brblue"
  40. set -l pwd_color "blue"
  41. switch (prompt_hostname)
  42. case 'nixstation'
  43. set primary_color "brblue"
  44. set pwd_color "blue"
  45. case 'ideapad'
  46. set primary_color "cyan"
  47. set pwd_color "brcyan"
  48. case 'moholt'
  49. set primary_color "yellow"
  50. set pwd_color "bryellow"
  51. case '*'
  52. set primary_color "red"
  53. set pwd_color "brred"
  54. end
  55. set_color normal
  56. shlvl_prompt
  57. set_color normal
  58. printf "("
  59. set_color --bold $primary_color
  60. printf "%s" $USER
  61. set_color normal
  62. printf "@"
  63. set_color --bold $primary_color
  64. printf "%s" (prompt_hostname)
  65. set_color normal
  66. printf ":"
  67. set_color --bold $pwd_color
  68. printf "%s" (prompt_pwd)
  69. set_color normal
  70. printf ")"
  71. set_color --bold brgreen
  72. current_git_branch
  73. set_color normal
  74. printf '$ '
  75. '';
  76. };
  77. };
  78. }