summaryrefslogtreecommitdiff
path: root/shared/home-manager/zsh/default.nix
blob: 52ade3952579fb2c299c83c7e478bad6d4d9fe24 (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
{config, ...}: {
  imports = [
    ./plugins.nix
    ./editing.nix
  ];

  programs.zsh = {
    enable = true;

    # Feeble attempt at cleaning up home directory.
    # TODO: dotDir = (pathRelativeTo config.xdg.configHome config.home) + "/zsh";
    dotDir = ".config/zsh";
    history.path = config.xdg.cacheHome + "/zsh/history";

    initContent = ''
      set -o PROMPTSUBST
      if [ -v NVIM -o -v VIM ]; then
        # smol prompt
        PROMPT='%# '
      else
        function _prompt_git_branch_name() {
          local branch="$(git symbolic-ref HEAD 2>/dev/null | awk 'BEGIN{FS="/"} {print $NF}')"
          if ! [ -z "$branch" ]; then
            echo ' ('$branch')'
          fi
        }
        # loong looooong prooooompt – Nagāi Sakeru Gumi
        PROMPT='%B%(2L.LVL%L .)%b%F{red}%(?..E%? )%f%F{93}%n%f@%F{35}%m%f%F{blue}$(_prompt_git_branch_name)%f# '
      fi
      RPROMPT='%F{green}%$((COLUMNS/4))<...<%~%<<%f'

      mkcd () {
        mkdir "$1" && cd "$1"
      }
    '';
  };
}