aboutsummaryrefslogtreecommitdiff
path: root/users/tdback/modules/shell/default.nix
blob: 3237cda96a63c0bbb0a574f811bc3d0440d7a777 (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
{ ... }:
{
  programs = {
    zoxide = {
      enable = true;
      enableBashIntegration = true;
      options = [ "--cmd cd" ];
    };

    bash = {
      enable = true;
      historyFile = "~/.bash_history";
      historyControl = [
        "ignoredups"
        "ignorespace"
      ];
      shellOptions = [ "histappend" ];
      initExtra = ''
        PS1="
        \[\e[34m\]\u\[\e[33m\] at \[\e[34m\]\h\[\e[33m\] in \[\e[34m\]\w
        \[\e[33m\]λ\[\e[0m\] "

        # Set sane options.
        set -o noclobber
        set -o vi
        bind "\C-l":clear-screen
        bind "\C-p":previous-history
        bind "\C-n":next-history
      '';

      profileExtra = ''
        # Add script directories to PATH.
        PATH=$PATH:$HOME/scripts
        PATH=$PATH:$HOME/.local/bin

        # Clean up duplicate entries in PATH while preserving directory order.
        PATH="$(echo $PATH | tr ':' '\n' | awk '!a[$0]++' | tr '\n' ':' | sed 's/:$//')"
      '';

      sessionVariables = {
        BROWSER = "firefox";
        EDITOR = "vi";
        KEYTIMEOUT = 1;
        LC_ALL = "en_US.UTF-8";
        LESSHISTFILE = "-";
        MANPAGER = "less -R --use-color -Dd+r -Du+b";
      };

      shellAliases = {
        cp = "cp -i";
        mv = "mv -i";
        rm = "rm -I";
        ls = "ls --color=auto";
        cat = "bat -pp";
        grep = "grep --color=auto";
        diff = "diff --color=auto";
        song = "yt-dlp --continue --no-check-certificate --format=bestaudio -x --add-metadata --audio-format=flac";
        mkdir = "mkdir -p";
      };
    };
  };
}