{ config, ... }: { config = { programs.fish = { enable = true; shellAbbrs = { l = "less"; gco = "git checkout"; "-C" = { position = "anywhere"; expansion = "--color"; }; L = { position = "anywhere"; setCursor = true; expansion = "% | less"; }; "!!" = { position = "anywhere"; function = "last_history_item"; }; vim_edit_texts = { position = "command"; regex = ".+\\.txt"; function = "vim_edit"; }; "4DIRS" = { setCursor = "!"; expansion = "$(string join \\n -- 'for dir in */' 'cd $dir' '!' 'cd ..' 'end')"; }; dotdot = { regex = "^\\.\\.+$"; function = "multicd"; }; }; }; nmt = { description = "if fish.shellAbbrs is set, check fish.config contains valid abbreviations"; script = '' assertFileContains home-files/.config/fish/config.fish \ 'abbr --add -- l less' assertFileContains home-files/.config/fish/config.fish \ 'abbr --add -- gco "git checkout"' assertFileContains home-files/.config/fish/config.fish \ 'abbr --add --position anywhere -- -C --color' assertFileContains home-files/.config/fish/config.fish \ 'abbr --add --position anywhere --set-cursor -- L "% | less"' assertFileContains home-files/.config/fish/config.fish \ 'abbr --add --function last_history_item --position anywhere -- !!' assertFileContains home-files/.config/fish/config.fish \ "abbr --add --function vim_edit --position command --regex '.+\.txt' -- vim_edit_texts" assertFileContains home-files/.config/fish/config.fish \ 'abbr --add '"'"'--set-cursor=!'"'"' -- 4DIRS "$(string join \n -- '"'"'for dir in */'"'"' '"'"'cd $dir'"'"' '"'"'!'"'"' '"'"'cd ..'"'"' '"'"'end'"'"')' assertFileContains home-files/.config/fish/config.fish \ "abbr --add --function multicd --regex '^\.\.+$' -- dotdot" ''; }; }; }