flake/homes/modules/shell/fish.nix
2026-03-22 12:26:35 +10:00

73 lines
1.9 KiB
Nix
Executable file

{pkgs, ...}: {
programs.fish = {
enable = true;
generateCompletions = true;
interactiveShellInit = let
greetings =
[
# Official _cry64 quotes
"Do butterflies cry when they're sad?"
"I hope they do"
"I think Alice is lost..."
"I once again retreat to the sanctuary of my virtual realm"
# Unknown
"Welcome weary traveler to my shop"
# Legend of Zelda
"It's dangerous to go alone! Take this."
# ULTRAKILL
"Something wicked this way comes"
"May your L's be many... and your bitches few"
# Terraria
"What a horrible night to have a curse."
"The ancient spirits of light and dark have been released."
# Calamity
"The god of the stars rejects your offering. The ritual can only be performed at night."
"You should have just died..."
"Supreme Witch, Calamitas has killed every player!"
# Key Fairy
"A broken heart beats in fractals"
# Signalis
"Remember our promise"
]
|> map (x: "\"${x}\"")
|> builtins.concatStringsSep " ";
in ''
# add dotnet completions if it exists (ie we're in a virtual environment)
if type -q dotnet
complete -f -c dotnet -a "(dotnet complete (commandline -cp))"
end
function rand_greet
set greetings ${greetings}
echo -n $greetings[(random 1 (count $greetings))]
end
function gitignore -a type
curl -sL "https://www.gitignore.io/api/$type"
end
end
function decompile
objdump --disassemble --demangle --debugging --debugging-tags $argv | bat --language asm
end
set -g fish_greeting (rand_greet)
'';
plugins = [
{
name = "grc";
src = pkgs.fishPlugins.grc.src;
}
];
};
}