{
pkgs,
lib,
...
}:
let
inherit (builtins) map;
inherit (lib) getAttrs;
in
{
home.shell.enableFishIntegration = true;
programs.fish = {
enable = true;
plugins =
map
(getAttrs [
"name"
"src"
])
(
with pkgs.fishPlugins;
[
fzf-fish
autopair
hydro
{
name = "ghq";
src = pkgs.fetchFromGitHub {
owner = "decors";
repo = "fish-ghq";
sha256 = "0cv7jpvdfdha4hrnjr887jv1pc6vcrxv2ahy7z6x562y7fd77gg9";
# date = "2021-07-16T13:17:09+09:00";
rev = "cafaaabe63c124bf0714f89ec715cfe9ece87fa2";
};
}
]
);
interactiveShellInit = ''
bind \es __ghq_repository_search
# don't bind ctrl-t, it does nice things on macOS/BSD
set FZF_CTRL_T_COMMAND
set --export FZF_DEFAULT_OPTS '--cycle --layout=reverse --border --height=90% --preview-window=wrap --marker="*"'
fzf_configure_bindings --directory=\cx\cf
set --global hydro_multiline true
set --global hydro_color_pwd 00AFFF
set --global hydro_color_git 5FD700
set --global hydro_color_start FF00FF
set --global hydro_color_error D70000
set --global hydro_color_prompt 5FAF00
set --global hydro_color_duration 87875F
if set --query ZED_TERM
set -x EDITOR "zed -w"
end
'';
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 = {
dus = "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;
};
programs.nix-your-shell = {
enable = true;
};
}
user/settings/fish.nix (view raw)