all repos — nixfiles @ 5404bbc0efbb5676466739a19cb166c704f4028b

System and user configuration, managed by nix and home-manager

user/settings/fish.nix (view raw)

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