78 lines
1.7 KiB
Nix
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;
|
|
};
|
|
};
|
|
}
|