summaryrefslogtreecommitdiff
path: root/conf/fish.nix
blob: 75af4132f44dad2d00eb1199e319bf6605fbefb1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
{
  programs.fish = {
    enable = true;
    shellInit = ''
      set fish_greeting ""
    '';  
    interactiveShellInit = ''
      eval (dircolors -c ~/.dir_colors)

      set fish_color_normal         white
      set fish_color_command        magenta --bold
      set fish_color_param          green
      set fish_color_error          brred
      set fish_color_operator       cyan
      set fish_color_comment        white
      set fish_color_cwd            green
      set fish_color_quote          brown
      set fish_color_autosuggestion 555
    '';  
    promptInit = ''
      function fish_prompt
        set last_status $status

        if not set -q __fish_prompt_normal
          set -g __fish_prompt_normal (set_color normal)
        end

        switch $USER
          case root
            if not set -q __fish_prompt_cwd
              if set -q fish_color_cwd_root
                set -g __fish_prompt_cwd (set_color $fish_color_cwd_root)
              else
                set -g __fish_prompt_cwd (set_color $fish_color_cwd)
              end
            end

          case '*'
            if not set -q __fish_prompt_cwd
              set -g __fish_prompt_cwd (set_color $fish_color_cwd)
            end
        end

        echo -n -s 'λ ' "$__fish_prompt_cwd" (prompt_pwd) "$__fish_prompt_normal"

        if test $IN_NIX_SHELL
          echo -n -s ' (nix-shell)'
        end

        if test $last_status -gt 0
          set_color $fish_color_cwd_root
          echo -n -s ' ● '
          set_color normal
        else
          echo -n -s ' ● '
        end
      end

      function fish_right_prompt
        set_color $fish_color_autosuggestion
        date '+%H:%M:%S'
        set_color normal
      end
    '';
  };
}