{ 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.hydro ] ); 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" = { recursive = true; source = "${nixfiles}/user/settings/fish/conf.d"; }; programs.nix-your-shell = { enable = true; nix-output-monitor.enable = true; enableFishIntegration = true; }; home.activation.sponge-configure = '' run ${lib.getExe config.programs.fish.package} -c ' set --universal sponge_delay 60 ' ''; }