mirror of
https://github.com/kittywitch/nixfiles.git
synced 2026-02-09 04:19:19 -08:00
121 lines
3.4 KiB
Nix
121 lines
3.4 KiB
Nix
{
|
||
config,
|
||
lib,
|
||
std,
|
||
pkgs,
|
||
...
|
||
}: let
|
||
inherit (lib.modules) mkMerge mkIf;
|
||
inherit (std) string list serde;
|
||
in {
|
||
home.packages = with pkgs; [
|
||
# programs.zsh.enableAutosuggestions only includes nix-zsh-autocompletions
|
||
zsh-completions
|
||
fortune
|
||
neofetch
|
||
ponysay
|
||
];
|
||
|
||
xdg.configFile."kattheme_immutable.json".text = serde.toJSON rec {
|
||
default = config.base16.defaultSchemeName;
|
||
current = default;
|
||
};
|
||
|
||
programs.zsh = {
|
||
enable = true;
|
||
syntaxHighlighting.enable = true;
|
||
autosuggestion.enable = true;
|
||
initExtra = let
|
||
zshOpts = [
|
||
"auto_pushd"
|
||
"pushd_ignore_dups"
|
||
"pushdminus"
|
||
"rmstarsilent"
|
||
"nonomatch"
|
||
"long_list_jobs"
|
||
"interactivecomments"
|
||
"append_history"
|
||
"hist_ignore_space"
|
||
"hist_verify"
|
||
"inc_append_history"
|
||
"nosharehistory"
|
||
"nomenu_complete"
|
||
"auto_menu"
|
||
"no_auto_remove_slash"
|
||
"complete_in_word"
|
||
"always_to_end"
|
||
"nolistbeep"
|
||
"autolist"
|
||
"listrowsfirst"
|
||
];
|
||
in ''
|
||
${
|
||
if pkgs.hostPlatform.isLinux
|
||
then ''
|
||
eval $(dircolors -b | sd "\*#=00;90" "*\#=00;90")
|
||
''
|
||
else ''
|
||
''
|
||
}
|
||
PROMPT_EOL_MARK='''
|
||
ZSH_TAB_TITLE_ADDITIONAL_TERMS='wezterm'
|
||
ZSH_TAB_TITLE_ENABLE_FULL_COMMAND=true
|
||
zmodload -i zsh/complist
|
||
h=()
|
||
if [[ -r ~/.ssh/config ]]; then
|
||
h=($h ''${''${''${(@M)''${(f)"$(cat ~/.ssh/config)"}:#Host *}#Host }:#*[*?]*})
|
||
fi
|
||
if [[ $#h -gt 0 ]]; then
|
||
zstyle ':completion:*:ssh:*' hosts $h
|
||
zstyle ':completion:*:slogin:*' hosts $h
|
||
fi
|
||
unset h
|
||
u=(root ${config.home.username})
|
||
zstyle ':completion:*:ssh:*' users $u
|
||
unset u
|
||
zstyle ':completion:*:*:*:*:*' menu select
|
||
zstyle ':completion:*:cd:*' tag-order local-directories directory-stack path-directories
|
||
zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#) ([0-9a-z-]#)*=01;34=0=01'
|
||
zstyle ':completion:*:*:*:*:processes' command "ps -u $USER -o pid,user,comm -w -w"
|
||
zstyle ':completion:*:complete:pass:*:*' matcher 'r:|[./_-]=** r:|=*' 'l:|=* r:|=*'
|
||
zstyle ':completion:*' list-colors ''${(s.:.)LS_COLORS}
|
||
zstyle ':fzf-tab:complete:cd:*' fzf-preview 'eza -1lb --color=always $realpath'
|
||
${string.concatSep "\n" (map (opt: "setopt ${opt}") zshOpts)}
|
||
bindkey '^ ' autosuggest-accept
|
||
${
|
||
if pkgs.hostPlatform.isDarwin
|
||
then ''
|
||
export PATH="''${KREW_ROOT:-$HOME/.krew}/bin:$PATH"
|
||
''
|
||
else ""
|
||
}
|
||
'';
|
||
shellAliases = mkMerge [
|
||
{
|
||
nixdirfmt = "nixpkgs-fmt $(fd -e nix)";
|
||
dmesg = "dmesg -HP";
|
||
hg = "history 0 | rg";
|
||
}
|
||
(mkIf pkgs.hostPlatform.isLinux {
|
||
sys = "systemctl";
|
||
sysu = "systemctl --user";
|
||
logu = "journalctl --user";
|
||
log = "journalctl";
|
||
lg = "log --no-pager | rg";
|
||
})
|
||
];
|
||
localVariables = {
|
||
ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE = "fg=3,bold";
|
||
ZSH_AUTOSUGGEST_USE_ASYNC = 1;
|
||
};
|
||
plugins = with pkgs.zsh-plugins; (list.map (plugin: plugin.zshPlugin) [
|
||
tab-title
|
||
vim-mode
|
||
evil-registers
|
||
]);
|
||
};
|
||
|
||
home.sessionVariables = {
|
||
XDG_DATA_HOME = "${config.xdg.dataHome}";
|
||
};
|
||
}
|