summary refs log tree commit diff stats
path: root/user/settings/fish.nix
blob: 8ed80e3ea4974acac4a0ac3101a7948cac35a44d (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
{ pkgs
, lib
, ...
}: {
  programs.fish = {
    enable = true;
    plugins = [
      {
        name = "tide";
        src = pkgs.fetchFromGitHub {
          # https://github.com/IlanCosman/tide
          owner = "IlanCosman";
          repo = "tide";
          rev = "a3426e157f94b8a9cb5bcf96946b1e55625a1948";
          sha256 = "1fwqmsrd6bpf67rgj6f362abjmpk6q8yynyskc4niwg3g15diqq5";
        };
      }
      {
        name = "fzf";
        src = pkgs.fetchFromGitHub {
          owner = "PatrickF1";
          repo = "fzf.fish";
          rev = "6d00ecc6e5b2b1313cfcb25515941ecfd5342b30";
          sha256 = "1sd5f6707hys6dibs1zb6f1imlkspqad5i24j4gf7lk9cby0zh6i";
        };
      }
      {
        name = "ghq";
        src = pkgs.fetchFromGitHub {
          owner = "decors";
          repo = "fish-ghq";
          rev = "cafaaabe63c124bf0714f89ec715cfe9ece87fa2";
          sha256 = "0cv7jpvdfdha4hrnjr887jv1pc6vcrxv2ahy7z6x562y7fd77gg9";
        };
      }
    ];
    interactiveShellInit = ''
      bind \es __ghq_repository_search
      fzf_configure_bindings --directory=\cx\cf
    '';
    shellAliases = {
      hist-freq-lines = lib.mkForce "history | sort | uniq -c | sort -gr | head -n100 | less";
      hist-freq-commands = lib.mkForce "history | cut -d' ' -f 1 | sort | uniq -c | sort -gr | head -n100 | less";
    };
    shellAbbrs = {
      "!!" = {
        position = "anywhere";
        function = "last_history_item";
      };
    };
    functions = {
      ds = "du -hd1 $argv[1] | sort -h";
      last_history_item = "echo $history[1]";
    };
  };
  xdg.configFile."fish/completions" = {
    recursive = true;
    source = ./fish/completions;
  };
  xdg.configFile."fish/functions" = {
    recursive = true;
    source = ./fish/functions;
  };
}