{ 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; }; }