aboutsummaryrefslogtreecommitdiff
path: root/nix/users/fcuny/shell.nix
blob: d54e7e0b58bf24293d3bebcf350a52555858c194 (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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
{
  lib,
  pkgs,
  ...
}:
let
  isLinux = pkgs.stdenv.isLinux;
in
{
  home.packages =
    with pkgs;
    [
      age # encryption tool
      bandwhich # bandwhich - a better ifconfig
      bottom # btm - a better top
      coreutils # GNU core utilities
      direnv # direnv - directory environment tool
      dust # dust - a more intuitive du
      jless # jless - a better cat
      jq # jq - a better json
      procs # procs - a better ps
      ripgrep # ripgrep - a better grep
      shellcheck # shell script linter
      tree # tree - a better ls
      wget # wget - another download tool
      yq # yq - a better yaml
    ]
    ++ (lib.optionals (isLinux) [ htop ]);

  # https://github.com/nix-community/home-manager/blob/master/modules/programs/fish.nix
  programs.fish = {
    enable = true;
    interactiveShellInit = ''
      set fish_greeting ""

      fish_add_path -p ~/.cargo/bin/

      # Add utmctl to PATH
      fish_add_path /Applications/UTM.app/Contents/MacOS/
    '';
    shellAbbrs = {
      ncg = "nix-collect-garbage --delete-older-than 7d";
      ndc = "nix develop --command";
      nfc = "nix flake check";
      ngcroot = "ls -al /nix/var/nix/gcroots/auto/";
      nph = "nix profile history --profile /nix/var/nix/profiles/system";
      nsn = "nix search nixpkgs";
      nsv = "nix store verify --all";

      g = "git";
      gap = "git add --patch";
    };
    shellAliases = {
      la = "eza -la --git --color=always --group-directories-first";
      ll = "eza -la -L=1 --git --color=always --group-directories-first";
      lt = "eza -aT -L=2 --git --color=always --group-directories-first";
    };
  };

  # an alternative to ls
  programs.eza = {
    enable = true;
    icons = "never";
    enableFishIntegration = false;
    extraOptions = [
      "--group-directories-first"
      "--no-quotes"
      "--git-ignore"
      "--icons=never"
    ];
  };

  # an alternative to find
  programs.fd = {
    enable = true;
    hidden = true;
    ignores = [
      ".git/"
      ".direnv/"
    ];
  };

  programs.direnv = {
    enable = true;
    nix-direnv.enable = true;
    enableZshIntegration = true;
    config = {
      global.disable_stdin = true;
      global.strict_env = true;
    };
  };

  programs.bat = {
    enable = true;
    config = {
      theme = "ansi";
      pager = "less -FR";
    };
  };

  programs.starship = {
    enable = true;
    settings = {
      add_newline = false;
      directory = {
        fish_style_pwd_dir_length = 3;
      };
      git_branch = {
        symbol = "🌱 ";
      };
      git_commit = {
        commit_hash_length = 4;
        tag_symbol = "🔖 ";
      };
      git_state = {
        format = "[($state($progress_current of $progress_total))]($style) ";
        cherry_pick = "[🍒 PICKING](bold red)";
      };
      git_status = {
        conflicted = "💢";
        ahead = "💨";
        behind = "😰";
        diverged = "😵";
        untracked = "🤷‍";
        stashed = "📦";
        modified = "📝";
        staged = "[++($count)](green)";
        renamed = "👅";
        deleted = "🗑️";
      };
      "$schema" = "https://starship.rs/config-schema.json";
      hostname = {
        disabled = true;
      };
      username = {
        disabled = true;
      };
      kubernetes = {
        disabled = false;
        style = "bold blue";
      };
      nix_shell.disabled = false;
    };
  };

  home.sessionVariables = {
    LESS = "-FRSXM";
    LESSCHARSET = "utf-8";
    PAGER = "less";
    SHELL = "${pkgs.fish}/bin/fish";
  };
}