aboutsummaryrefslogtreecommitdiff
path: root/modules/home-manager/shells/bash.nix
blob: 81eeae39651882c9444d22dc1ca996d23f8d2d43 (plain) (blame)
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
82
83
84
85
86
87
{ ... }:
{
	flake.modules.homeManager.bash =
		{ pkgs, ... }:
		{
			programs.bash = {
				enable = true;
				enableCompletion = true;
				initExtra = ''
          tabs 4
          clear
          PF_INFO="ascii title os kernel uptime memory shell wm" pfetch

          # Fancy prompt
          export PROMPT_COMMAND=__prompt_command
          __prompt_command() {
              local exit="$?"
              PS1=""
              local reset='\[\e[0m\]'
              local white='\[\e[97m\]'
              local blue='\[\e[38;5;25m\]'
              local bgblue='\[\e[48;5;25m\]'
              local green='\[\e[38;5;34m\]'
              local bggreen='\[\e[48;5;34m\]'
              local gray='\[\e[38;5;238m\]'
              local bggray='\[\e[48;5;238m\]'
              local red='\[\e[38;5;124m\]'
              local bgred='\[\e[48;5;124m\]'

              # Add user
              PS1+="$white$bgblue \u$blue"
              # Add SHLVL (shell depth)
              if [ $SHLVL -gt 2 ]; then
              	PS1+="$bggreen$white $(($SHLVL - 2))$reset$green"
              fi
              # Add dir
              PS1+="$bggray$white \w$reset$gray"
                  
              if [ $exit != 0 ]; then
              	# Change end color
                  #PS1+="$bgred$white \w$reset$red"
                  # Add exit code
                  PS1+="$bgred$white $exit$reset$red"
              else
              	# Change end color
                  #PS1+="$bggray$white \w$reset$gray"
                  # Add end cap
                  PS1+=""
              fi
              PS1+="$reset "
          }
          # Powerline prompt
          #export PS1='\[\e[48;5;25;38;5;189m\] \u \[\e[48;5;238;38;5;25m\] \[\e[48;5;238;38;5;189m\]\w      \[\e[0m\]\[\e[38;5;238m\]\[\e[0m\] '

          # Multiline prompt
          #export PS1="\[\e[32m\]╭──\[\e[31m\](\[\e[34m\]\u\[\e[33m\]@\[\e[34m\]\h\[\e[31m\])\[\e[32m\]-\[\e[31m\](\[\e[34m\]\w\[\e[31m\])\[\e[32m\]-\[\e[31m\](\[\e[34m\]\d\[\e[31m\])
          #\[\e[32m\]╰\[\e[0m\] "
        '';
				shellAliases = {
					cm = "cmatrix -absu 2";
					pipes = "pipes.sh -KR -p 3 -t3 -c 1 -c 2 -c 3 -c 4 -c 5 -c 6";
					cl = "clear";
					ls = "lsd";
					la = "lsd -a";
					ll = "lsd -al";
					tree = "lsd --tree";
					pathfindsaver = "while sleep 1; do pathfind -f; done";
					qalc = "qalc -s 'varunits 0' -s 'angle 2'";

					flake-rebuild = "nixos-rebuild switch --flake ~/nixos-configuration";
				};
			};

			programs.zoxide = {
				enable = true;
				enableBashIntegration = true;
				options = [ "--cmd cd" ];
			};

			home.packages = with pkgs; [
				zoxide
				pfetch
				lsd
				libqalculate
			];
		};
}