af28175e1c
All pre-existing, all mechanical: - pointerCursor no longer implies generation from the block alone; set enable. - top-level elixir_1_18 alias is deprecated for the beamPackages set. Same derivation, 1.18.4 either way. - pkgs.system -> pkgs.stdenv.hostPlatform.system. - fzf and atuin both bind Ctrl-R. Atuin is sourced last so it already owned the key; historyWidget.zsh.command = "" states that explicitly and satisfies home-manager's conflict check. Behaviour is unchanged and fzf keeps Ctrl-T and Alt-C.
167 lines
4.1 KiB
Nix
167 lines
4.1 KiB
Nix
{
|
|
config,
|
|
pkgs,
|
|
...
|
|
}:
|
|
{
|
|
programs = {
|
|
zsh = {
|
|
enable = true;
|
|
enableCompletion = true;
|
|
autosuggestion.enable = true;
|
|
syntaxHighlighting.enable = true;
|
|
completionInit = "autoload -U compinit && compinit -u";
|
|
|
|
shellAliases = {
|
|
c = "cargo";
|
|
d = "docker";
|
|
dc = "docker compose";
|
|
g = "git";
|
|
n = "nvim";
|
|
vim = "nvim";
|
|
ls = "eza";
|
|
cat = "bat";
|
|
ps = "procs";
|
|
du = "dust";
|
|
df = "duf";
|
|
j = "just";
|
|
lzd = "lazydocker";
|
|
open = "xdg-open";
|
|
o = "xdg-open";
|
|
s = "ssh";
|
|
v = "nohup neovide &; disown";
|
|
|
|
# cd
|
|
".." = "cd ..";
|
|
"..2" = "cd ../..";
|
|
"..3" = "cd ../../..";
|
|
};
|
|
|
|
history = {
|
|
size = 10000;
|
|
path = "${config.xdg.dataHome}/zsh/history";
|
|
};
|
|
|
|
plugins = [
|
|
{
|
|
name = "fzf-tab";
|
|
src = pkgs.fetchFromGitHub {
|
|
owner = "Aloxaf";
|
|
repo = "fzf-tab";
|
|
rev = "v1.1.2";
|
|
hash = "sha256-Qv8zAiMtrr67CbLRrFjGaPzFZcOiMVEFLg1Z+N6VMhg=";
|
|
};
|
|
}
|
|
{
|
|
name = "zsh-autopair";
|
|
src = pkgs.fetchFromGitHub {
|
|
owner = "hlissner";
|
|
repo = "zsh-autopair";
|
|
rev = "449a7c3";
|
|
hash = "sha256-3zvOgIi+q7+sTXrT+r/4v98qjeiEL4Wh64rxBYnwJvQ=";
|
|
};
|
|
}
|
|
];
|
|
|
|
initContent = ''
|
|
[[ -f ~/.secrets.zsh ]] && source ~/.secrets.zsh
|
|
[[ -n "$KITTY_WINDOW_ID" ]] && alias ssh="kitten ssh"
|
|
|
|
export PATH="$HOME/.bin:$PATH"
|
|
export PATH="''${ASDF_DATA_DIR:-$HOME/.asdf}/shims:$PATH"
|
|
export FOUNDRY_DISABLE_NIGHTLY_WARNING=true
|
|
export LD_LIBRARY_PATH=${pkgs.zlib}/lib:${pkgs.icu}/lib:${pkgs.stdenv.cc.cc.lib}/lib:$LD_LIBRARY_PATH
|
|
|
|
'';
|
|
};
|
|
|
|
fzf = {
|
|
enable = true;
|
|
enableZshIntegration = true;
|
|
# Both fzf and atuin bind Ctrl-R, and home-manager warns about the clash.
|
|
# Atuin is sourced last so it already won; this just makes that explicit
|
|
# and silences the warning. fzf keeps Ctrl-T and Alt-C.
|
|
historyWidget.zsh.command = "";
|
|
};
|
|
|
|
zoxide = {
|
|
enable = true;
|
|
enableZshIntegration = true;
|
|
# Replace `cd` with zoxide: `cd` = smart jump, `cdi` = interactive picker.
|
|
options = [ "--cmd cd" ];
|
|
};
|
|
|
|
atuin = {
|
|
enable = true;
|
|
enableZshIntegration = true;
|
|
# Local-only history (no account/sync). Atuin owns Ctrl-R; leave the
|
|
# up-arrow as normal zsh prefix history.
|
|
flags = [ "--disable-up-arrow" ];
|
|
settings = {
|
|
auto_sync = false;
|
|
update_check = false;
|
|
};
|
|
};
|
|
|
|
starship = {
|
|
enable = true;
|
|
settings = {
|
|
add_newline = true;
|
|
|
|
# Disable language modules to keep prompt short
|
|
nodejs.disabled = true;
|
|
python.disabled = true;
|
|
rust.disabled = true;
|
|
golang.disabled = true;
|
|
java.disabled = true;
|
|
ruby.disabled = true;
|
|
php.disabled = true;
|
|
elixir.disabled = true;
|
|
elm.disabled = true;
|
|
haskell.disabled = true;
|
|
julia.disabled = true;
|
|
kotlin.disabled = true;
|
|
lua.disabled = true;
|
|
nim.disabled = true;
|
|
nix_shell.disabled = true;
|
|
ocaml.disabled = true;
|
|
perl.disabled = true;
|
|
purescript.disabled = true;
|
|
scala.disabled = true;
|
|
swift.disabled = true;
|
|
terraform.disabled = true;
|
|
zig.disabled = true;
|
|
dotnet.disabled = true;
|
|
};
|
|
};
|
|
};
|
|
|
|
home = {
|
|
packages = with pkgs; [
|
|
btop
|
|
inxi
|
|
ripgrep
|
|
pass
|
|
bat
|
|
procs
|
|
eza
|
|
asdf-vm
|
|
fd
|
|
tdf
|
|
];
|
|
|
|
sessionVariables = {
|
|
"ASDF_NODEJS_AUTO_ENABLE_COREPACK" = "true";
|
|
# home-manager inits zoxide before atuin/fzf, tripping zoxide's doctor
|
|
# warning even though the `cd` override works fine (nothing after
|
|
# redefines cd). Silence the nag.
|
|
"_ZO_DOCTOR" = "0";
|
|
};
|
|
|
|
sessionPath = [
|
|
"./.git/safe/../../node_modules/.bin"
|
|
"./.git/safe/../../bin"
|
|
];
|
|
};
|
|
}
|