dotfiles/modules/home/common/terminal/shell/fish.nix

57 lines
1.3 KiB
Nix

{
lib,
pkgs,
config,
...
}: let
env =
lib.concatMapAttrsStringSep
"\n"
(name: value: "set -gx ${name} ${lib.escapeShellArg value}")
config.home.sessionVariables;
in {
programs.fish = {
enable = true;
shellAliases = config.home.shellAliases;
shellInit = ''
# Set global environment variables.
${env}
'';
functions = {
agx = {
wraps = "ag";
description = "Runs ag on the given string and returns a list of selectable references of the result. The selection is then opened in the editor.";
body = ''
hx (ag $search $argv[2..] | fzf | cut -d : -f 1,2)
'';
};
};
preferAbbrs = true;
shellAbbrs = {
"elm" = "elements";
# Git related
"ga" = "git add";
"gb" = "git branch";
"gst" = "git status";
"gbl" = "git blame";
"grs" = "git restore --staged";
"gcm" = "git commit -m \"%\"";
"iso-date" = "date -u +\"%Y-%m-%dT%H:%M:%SZ\"";
"jf" = "sudo journalctl -f -u";
"sys stat" = "systemctl status";
"sys up" = "systemctl start";
"sys down" = "systemctl stop";
"sys re" = "systemctl restart";
"-C" = {
position = "anywhere";
expansion = "--color";
};
};
};
}