summaryrefslogtreecommitdiff
path: root/nix_archive/nix/programs/zsh.nix
blob: 60714294dfd508e1e34ce295fdf29ae51d276627 (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
{ config, pkgs, ... }: {
  programs.zsh.enable = true;

  environment.shells = [ pkgs.zsh ];
  environment.pathsToLink = [ "/share/zsh" ];
  users.defaultUserShell = pkgs.zsh;
  environment.sessionVariables = {
    SHELL = "${pkgs.zsh}/bin/zsh";
  };

  home-manager.users.andrew = let
    homeDir = "${config.users.users.andrew.home}";
  in {
    programs.zsh = {
      enable = true;
      shellAliases = {
        sudo = "nocorrect sudo ";
        xargs = "nocorrect xargs ";
        cp = "rsync -avz";
        top = "htop";
        bc = "bc -l";
        pgrep = "pgrep -f";
        make = "make -j6";
        diff = "diff -u";
        gdb = "gdb -q";
        mail = "neomutt";
        iroha = "ssh andrew@iroha";
        moyo = "ssh andrew@moyo";
        zasshi = "ssh andrew@zasshi";
        denpa = "ssh moyo -t 'ssh 192.168.122.89'";
        rod = "ssh -p 1738 rod";
        bmrg = "ssh boomerang";
        cmv = "$HOME/c/camu/scripts/cmv.sh";
        cmv-add = "$HOME/c/camu/scripts/cmv_add.sh";
        cmv-pause = "cmv-add PAUSE";
        cmv-next = "cmv-add NEXT";
        cmv-prev = "cmv-add PREV";
        cmv-shuffle = "cmv-add SHUFFLE";
        cmv-sort = "cmv-add SORT";
        cmv-reverse = "cmv-add REVERSE";
        cmv-clear = "cmv-add CLEAR";
      };
      defaultKeymap = "emacs";
      history = {
        save = 10000;
        size = 10000;
        append = true;
        expireDuplicatesFirst = true;
        extended = true;
        path = "${homeDir}/.histfile";
        # Don't share history between sessions.
        share = false;
      };
      # Completion tanks startup performance.
      enableCompletion = false;
      zprof.enable = false;
      initExtra = ''
        autoload -U colors && colors
        exit_code_guy()
        {
          if [[ $? == 0 ]]; then
            echo "(・_・) >"
          else
            echo "(″ロ゛) > %{$fg[red]%}$?%{$fg[cyan]%}"
          fi
        }
        setopt prompt_subst
        if [[ -v NIX_SHELL ]]; then
          PS1="($NIX_SHELL)%{$fg[yellow]%}%n%{$fg[red]%}@%{$fg[light\ red]%}%M%{$fg[cyan]%}:%~\$(exit_code_guy)%{$reset_color%} "
        else
          PS1="%{$fg[yellow]%}%n%{$fg[red]%}@%{$fg[light\ red]%}%M%{$fg[cyan]%}:%~\$(exit_code_guy)%{$reset_color%} "
        fi
      '';
    };
  };
}