{ config, pkgs, lib, ... }: let inherit (lib) getAttrs removePrefix; nixfiles = config.home.homeDirectory + "/projects/alin.ovh/nixfiles"; direct_symlink = path: config.lib.file.mkOutOfStoreSymlink "${nixfiles}/${removePrefix "/" path}"; toPluginModule = getAttrs [ "name" "src" ]; in { home.shell.enableFishIntegration = true; programs.fish = { enable = true; plugins = map toPluginModule ( with pkgs.fishPlugins; [ done fzf-fish fifc autopair colored-man-pages fishbang sponge ] ++ [ pkgs.personal.fishPlugins.ghq pkgs.personal.fishPlugins.tide ] ); 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"; fadd = "funced --save"; fed = "funced --save"; }; }; xdg.configFile."fish/completions" = { recursive = true; source = direct_symlink "/user/settings/fish/completions"; }; xdg.configFile."fish/functions" = { recursive = true; source = direct_symlink "/user/settings/fish/functions"; }; xdg.configFile."fish/per-term" = { recursive = true; source = direct_symlink "/user/settings/fish/per-term"; }; xdg.configFile."fish/conf.d/user_config.fish" = { source = direct_symlink "/user/settings/fish/config.fish"; }; programs.nix-your-shell = { enable = true; nix-output-monitor.enable = true; enableFishIntegration = true; }; programs.fish.shellInit = '' set fish_function_path $fish_function_path[1] ${config.xdg.configHome}/fish/functions/tide $fish_function_path[2..-1] ''; home.activation.tide-configure = '' run ${lib.getExe config.programs.fish.package} -c ' tide configure \ --auto \ --style=Lean \ --prompt_colors="16 colors" \ --show_time="24-hour format" \ --lean_prompt_height="Two lines" \ --prompt_connection=Disconnected \ --prompt_spacing=Compact \ --icons="Few icons" set --universal tide_left_prompt_items shlvl pwd vcs newline character ' ''; }