{ 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 = ''
            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 'for dir in */
          cd \$dir
          !
          cd ..
        end
        '"
        assertFileContains home-files/.config/fish/config.fish \
          "abbr --add --function multicd --regex '^\.\.+$' -- dotdot"
      '';
    };
  };
}