{ config, pkgs, ... }: { home.packages = with pkgs; [ (writeShellScriptBin "select_command" (builtins.readFile ./select_command.sh)) (writeShellScriptBin "move_avatar" (builtins.readFile ./move_avatar.sh)) (writeShellScriptBin "update_git_config" (builtins.readFile ./update_system_from_git.sh)) zsh-powerlevel10k fzf fd eza zoxide bat neofetch yazi zenity ]; home.file.".p10k.zsh".source = ./p10k.zsh; # make it sync # home.file.".saved_modes".source = # config.lib.file.mkOutOfStoreSymlink ./saved_modes; # home.activation.linkMyFiles = config.lib.dag.entryAfter [ "writeBoundary" ] '' # ln -s ${toString ./saved_modes} ~/.saved_modes # ''; programs.zsh = { enable = true; autocd = true; enableCompletion = true; autosuggestion.enable = true; syntaxHighlighting.enable = true; history = { append = true; ignoreAllDups = true; ignoreDups = true; saveNoDups = true; share = true; }; plugins = with pkgs; [ { file = "powerlevel10k.zsh-theme"; name = "powerlevel10k"; src = "${zsh-powerlevel10k}/share/zsh-powerlevel10k"; } { file = "p10k.zsh"; name = "powerlevel10k-config"; src = ./p10k.zsh; } ]; oh-my-zsh = { enable = true; plugins = [ "git" "python" "ssh" "eza" "zoxide" "fzf" "command-not-found" "colored-man-pages" ]; }; shellAliases = { ll = "ls -lh"; la = "ls -la"; ".." = "cd .."; "..." = "cd ../.."; c = "clear"; addpath = "export PATH=$PATH:$1"; tree = "eza --tree"; kk = "sudo kill -9"; grepps = "ps -A | grep"; try = ''f() { nix-shell -p "$@" --run zsh; unset -f f; }; f''; wttr = "curl wttr.in/Ramenki\\?p1MQ"; gitpa = '' f() { git add -A && git commit -m "$1" && git push; unset -f f; }; f ''; og = ''f() { z github "$@" && code . && exit; unset -f f; }; f''; cnfg = "cd nixos-config && code . && exit"; x = "select_command"; u = "update_git_config"; mv_w = "move_wallpaper"; next_w = "next_wallpaper"; next_wr = "next_wallpaper -r"; next_wf = '' next_wallpaper -f $(zenity --title "Pick a wallpaper" --file-selection --file-filter \*.png)''; mv_avatar = "move_avatar"; t = "todo"; ta = ''f() { todo add "$*"; todo; unset -f f; }; f''; tr = ''f() { todo rm "$@"; todo; unset -f f; }; f''; td = ''f() { todo done "$@"; todo; unset -f f; }; f''; }; initContent = '' (cat ~/.cache/wal/sequences &) zstyle ':omz:plugins:eza' 'git-status' yes zstyle ':omz:plugins:eza' 'header' yes zstyle ':omz:plugins:eza' 'icons' yes ZOXIDE_CMD_OVERRIDE=cd ### --- COMPLETION TUNING ----------------------------- autoload -Uz compinit && compinit zstyle ':completion:*' menu select zstyle ':completion:*' list-colors "" ### --- KEYBINDINGS ---------------------------------- # bindkey -e # Emacs-style bindings # bindkey -v # Vim-style bindings ### --- ENVIRONMENT VARS ------------------------------ export EDITOR="nvim" export VISUAL="nvim" export PAGER="less" export LESS="-R" # --- fzf configuration --- if command -v fzf >/dev/null 2>&1; then # Enable key bindings and auto-completion [ -f "${pkgs.fzf}/share/fzf/key-bindings.zsh" ] && source "${pkgs.fzf}/share/fzf/key-bindings.zsh" [ -f "${pkgs.fzf}/share/fzf/completion.zsh" ] && source "${pkgs.fzf}/share/fzf/completion.zsh" # Example of optional fzf tuning export FZF_DEFAULT_COMMAND='fd --type f --hidden --follow --exclude .git' export FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND" export FZF_DEFAULT_OPTS='--height 40% --layout=reverse --border' fi [[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh eval "$(zoxide init zsh --cmd cd)" ''; }; }