85 lines
2.6 KiB
Nix
85 lines
2.6 KiB
Nix
{ config, lib, pkgs, inputs, ... }:
|
|
|
|
{
|
|
users.users.moritz.shell = pkgs.fish;
|
|
# needed for nix completions
|
|
programs.fish.enable = true;
|
|
home-manager.users.moritz = {
|
|
programs = {
|
|
fish = {
|
|
enable = true;
|
|
shellAbbrs = {
|
|
us = "systemctl --user";
|
|
rs = "doas systemctl";
|
|
|
|
ga = "git add";
|
|
gb = "git branch";
|
|
gc = "git commit";
|
|
gco = "git checkout";
|
|
gd = "git diff";
|
|
gds = "git diff --staged";
|
|
gp = "git push";
|
|
gs = "git status";
|
|
};
|
|
shellAliases = {
|
|
du = "dust";
|
|
ls = "exa -lh --icons --git";
|
|
cat = "bat";
|
|
feh = "feh --auto-zoom --scale-down";
|
|
grep = "rg";
|
|
rm = "rm -i";
|
|
mv = "mv -i";
|
|
|
|
ssh = "TERM=xterm-color command ssh";
|
|
|
|
nix-switch = "doas nixos-rebuild switch --flake ~/.dotfiles";
|
|
nix-boot = "doas nixos-rebuild boot --flake ~/.dotfiles";
|
|
nix-lock =
|
|
"doas nixos-rebuild dry-activate --flake ~/.dotfiles --recreate-lock-file";
|
|
};
|
|
shellInit = ''
|
|
fzf_configure_bindings --git_log=\cg
|
|
|
|
# Vi Mode
|
|
fish_vi_key_bindings
|
|
|
|
# Emulates vim's cursor shape behavior
|
|
# Set the normal and visual mode cursors to a block
|
|
set fish_cursor_default block
|
|
# Set the insert mode cursor to a line
|
|
set fish_cursor_insert line
|
|
# Set the replace mode cursor to an underscore
|
|
set fish_cursor_replace_one underscore
|
|
# The following variable can be used to configure cursor shape in
|
|
# visual mode, but due to fish_cursor_default, is redundant here
|
|
set fish_cursor_visual block
|
|
|
|
# Variables
|
|
set -x EDITOR TERM=kitty-direct emacsclient -t # HACK to fix 24bit color support with kitty
|
|
'';
|
|
functions = {
|
|
gi = ''
|
|
set url https://www.gitignore.io/api
|
|
if test (count $argv) -ne 1
|
|
set list (curl -sL $url/list | string split ",")
|
|
set choice (string split " " $list | fzf -m --preview "curl -sL $url/{}" | string join ",")
|
|
else
|
|
set choice $argv[1]
|
|
end
|
|
curl -sL $url/$choice > .gitignore
|
|
'';
|
|
fish_greeting = "";
|
|
cheat = "cht.sh $argv | bat -p";
|
|
};
|
|
plugins = [{
|
|
name = "dracula";
|
|
src = inputs.dracula-fish;
|
|
}];
|
|
};
|
|
fzf.enableFishIntegration = true;
|
|
starship.enableFishIntegration = true;
|
|
};
|
|
home.packages = with pkgs.fishPlugins; [ fzf-fish pisces ];
|
|
};
|
|
}
|