Consistently format module argument blocks and convert aligned package comments to inline comments. Trim trailing whitespace and minor layout tweaks across modules. Bump opencode rev, narHash and lastModified in flake.lock and remove the original dev ref.
116 lines
2.8 KiB
Nix
116 lines
2.8 KiB
Nix
# modules/shell.nix
|
|
# Fish shell configuration with plugins and aliases
|
|
{
|
|
config,
|
|
pkgs,
|
|
lib,
|
|
...
|
|
}:
|
|
|
|
{
|
|
# Enable Fish shell
|
|
programs.fish = {
|
|
enable = true;
|
|
|
|
# Interactive shell init (equivalent to config.fish)
|
|
interactiveShellInit = ''
|
|
# Disable greeting
|
|
set -g fish_greeting
|
|
|
|
# Ghostty shell integration
|
|
if set -q GHOSTTY_RESOURCES_DIR
|
|
source "$GHOSTTY_RESOURCES_DIR/shell-integration/fish/vendor_conf.d/ghostty-shell-integration.fish"
|
|
end
|
|
|
|
# Pure prompt configuration
|
|
set -g pure_show_system_time false
|
|
set -g pure_enable_single_line_prompt true
|
|
|
|
# Key bindings (vi mode optional)
|
|
# fish_vi_key_bindings
|
|
|
|
# Better directory navigation
|
|
set -g fish_prompt_pwd_dir_length 3
|
|
'';
|
|
|
|
# Shell aliases
|
|
shellAliases = {
|
|
# Modern replacements
|
|
ll = "eza -la --icons --git";
|
|
ls = "eza --icons";
|
|
la = "eza -la --icons";
|
|
lt = "eza --tree --icons --level=2";
|
|
cat = "bat";
|
|
find = "fd";
|
|
grep = "rg";
|
|
df = "duf";
|
|
du = "dust";
|
|
sed = "sd";
|
|
|
|
# Docker shortcuts
|
|
dc = "docker compose";
|
|
dps = "docker ps";
|
|
dpa = "docker ps -a";
|
|
dl = "docker logs -f";
|
|
dex = "docker exec -it";
|
|
|
|
# Git shortcuts
|
|
gs = "git status";
|
|
gd = "git diff";
|
|
gds = "git diff --staged";
|
|
gl = "git log --oneline -20";
|
|
glo = "git log --oneline --graph --all";
|
|
ga = "git add";
|
|
gc = "git commit";
|
|
gp = "git push";
|
|
gpu = "git pull";
|
|
gco = "git checkout";
|
|
gb = "git branch";
|
|
gst = "git stash";
|
|
|
|
# NixOS shortcuts
|
|
rebuild = "sudo nixos-rebuild switch --flake .";
|
|
rebuild-boot = "sudo nixos-rebuild boot --flake .";
|
|
rebuild-test = "sudo nixos-rebuild test --flake .";
|
|
update = "nix flake update";
|
|
search = "nix search nixpkgs";
|
|
gc-nix = "sudo nix-collect-garbage -d";
|
|
|
|
# System
|
|
ports = "ss -tulanp";
|
|
myip = "curl -s ifconfig.me";
|
|
".." = "cd ..";
|
|
"..." = "cd ../..";
|
|
"...." = "cd ../../..";
|
|
|
|
# Safety
|
|
rm = "rm -i";
|
|
mv = "mv -i";
|
|
cp = "cp -i";
|
|
};
|
|
|
|
# Shell abbreviations (expand on space, more flexible than aliases)
|
|
shellAbbrs = {
|
|
g = "git";
|
|
d = "docker";
|
|
n = "nix";
|
|
v = "nvim";
|
|
c = "code";
|
|
z = "zed";
|
|
};
|
|
};
|
|
|
|
# Fish plugins (managed by NixOS)
|
|
environment.systemPackages = with pkgs; [
|
|
# Fish plugins
|
|
fishPlugins.pure # Pure prompt (minimal & fast)
|
|
fishPlugins.autopair # Auto-close brackets, quotes
|
|
fishPlugins.fzf-fish # Fzf integration for fish
|
|
fishPlugins.done # Notification when long command finishes
|
|
fishPlugins.grc # Colorize command output
|
|
|
|
# Required by aliases
|
|
dust # Better du
|
|
];
|
|
}
|