103 lines
2.6 KiB
Nix
103 lines
2.6 KiB
Nix
{pkgs, host, ...}: {
|
||
programs.fish = {
|
||
enable = true;
|
||
interactiveShellInit = ''
|
||
set fish_greeting # Disable greeting
|
||
set show_startup_tips false
|
||
set -U tide_right_prompt_items status\x1ecmd_duration\x1etime
|
||
'';
|
||
shellInit = "
|
||
fish_add_path /usr/local/go/bin
|
||
fish_add_path ~/go/bin
|
||
fish_add_path ~/.local/bin
|
||
set -gx MANPAGER 'nvim +Man!'
|
||
set -gx EDITOR 'nvim'
|
||
set -gx _JAVA_AWT_WM_NONREPARENTING 1
|
||
set -gx NIX_FLAKE '/home/e/dev/nix'
|
||
";
|
||
plugins = [
|
||
{
|
||
name = "fzf";
|
||
inherit (pkgs.fishPlugins.fzf-fish) src;
|
||
}
|
||
{
|
||
name = "puffer";
|
||
inherit (pkgs.fishPlugins.puffer) src;
|
||
}
|
||
];
|
||
functions = {
|
||
nix-shell = {
|
||
wraps = "nix-shell";
|
||
body = ''
|
||
command nix-shell $argv --command "fish"
|
||
'';
|
||
};
|
||
nix = {
|
||
wraps = "nix";
|
||
body = ''
|
||
if status is-interactive
|
||
and test (count $argv) = 1 -a "$argv[1]" = develop
|
||
nix develop --command (status fish-path)
|
||
else
|
||
command nix $argv
|
||
end
|
||
'';
|
||
};
|
||
fish_jj_prompt = {
|
||
body = ''
|
||
if not command -sq jj
|
||
return 1
|
||
end
|
||
|
||
if not jj root &>/dev/null
|
||
return 1
|
||
end
|
||
|
||
# Generate prompt
|
||
set -l info "$(
|
||
jj log --ignore-working-copy --no-graph --color=always --revisions=@ --template "
|
||
separate(
|
||
' ',
|
||
self.change_id().shortest(),
|
||
bookmarks.join(', '),
|
||
if(conflict, label('conflict', '×')),
|
||
if(empty, label('empty', '(empty)')),
|
||
if(divergent, label('divergent', '(divergent)')),
|
||
if(hidden, label('hidden', '(hidden)')),
|
||
)
|
||
"
|
||
)"
|
||
or return 1
|
||
|
||
if test -n $info
|
||
printf ' (jj: %s)' $info
|
||
else
|
||
return 1
|
||
end
|
||
'';
|
||
};
|
||
fish_vcs_prompt = {
|
||
body = ''
|
||
fish_jj_prompt $argv
|
||
or fish_git_prompt $argv
|
||
or fish_hg_prompt $argv
|
||
or fish_fossil_prompt $argv
|
||
'';
|
||
};
|
||
};
|
||
shellAbbrs = {
|
||
g = "git";
|
||
k = "kubectl";
|
||
};
|
||
shellAliases = {
|
||
":q" = "exit";
|
||
hms = "home-manager switch --flake $NIX_FLAKE#${host.username}";
|
||
rbs = "sudo nixos-rebuild switch --flake $NIX_FLAKE#${host.hostName}";
|
||
mpv = "mpv --no-keepaspect-window";
|
||
cat = "bat -pp";
|
||
tcd = "cd $(mktemp -d)";
|
||
docker = "nerdctl";
|
||
vimdiff = "nvim -d";
|
||
};
|
||
};
|
||
}
|