default.nix 2.0 KB

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