summaryrefslogtreecommitdiff
path: root/fish.nix
blob: 3f061b60214c42f52b207c9dd69f6f16997f1dd7 (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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
{ pkgs, ... }:

{
  programs.fish = {
    enable = true;

    shellInit = ''
      set fish_greeting ""
    '';

    interactiveShellInit = ''
      eval (dircolors -c ${./asset/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
      set fish_color_redirection    white
    '';

    promptInit = ''
      function fish_prompt
        if test $TERM = "dumb"
          echo "\$ "
          return 0
        end

        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
          if test $NIX_SHELL_NAME
            echo -n -s ' (' $NIX_SHELL_NAME ')'
          else
            echo -n -s ' (nix-shell)'
          end
        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
    '';
  };
}