78 lines
1.7 KiB
Nix

{ config, lib, ... }:
{
options.modules.fish = {
enable = lib.mkEnableOption "Fish integration";
enableDefaultAliases = lib.mkOption {
type = lib.types.bool;
default = true;
description = "Enable default aliases and abbreviations";
};
enableStarship = lib.mkOption {
type = lib.types.bool;
default = false;
description = "Enable Starship prompt";
};
functions = lib.mkOption {
type = with lib.types; attrsOf str;
description = "Fish function definitions";
};
};
config = lib.mkIf config.modules.fish.enable {
programs.nix-index = {
enable = true;
enableFishIntegration = true;
};
programs.starship = lib.mkIf config.modules.fish.enableStarship {
enable = true;
enableFishIntegration = true;
};
programs.fish = {
enable = true;
interactiveShellInit = ''
set fish_greeting
cat ~/.cache/wal/sequences
'';
shellAliases = lib.mkIf config.modules.fish.enableDefaultAliases {
".." = "cd ..";
"..." = "cd ../..";
"...." = "cd ../../../";
"....." = "cd ../../../../";
"cp" = "cp -v";
"ddf" = "df -h";
"etc" = "erd -H";
"mkdir" = "mkdir -p";
"mv" = "mv -v";
"rm" = "rm -v";
"rr" = "rm -rf";
"neofetch" = "fastfetch";
};
shellAbbrs = lib.mkIf config.modules.fish.enableDefaultAliases {
gaa = "git add -A";
ga = "git add";
gbd = "git branch --delete";
gb = "git branch";
gc = "git commit";
gcm = "git commit -m";
gcob = "git checkout -b";
gco = "git checkout";
gd = "git diff";
gl = "git log";
gp = "git push";
gs = "git status";
};
functions = config.modules.fish.functions;
};
};
}