diff --git a/.zshrc b/.zshrc index 86b1d88..34e948b 100644 --- a/.zshrc +++ b/.zshrc @@ -26,7 +26,11 @@ export MANPAGER="sh -c \"col -b | vim -c 'set ft=man ts=8 nomod nolist nonu' \ -c 'nnoremap i ' \ -c 'nnoremap ' \ -c 'noremap q :quit' -\"" -export KUBECONFIG=$(echo `ls ~/.kube/*config*` | sed 's/ /:/g') +typeset -a kubeconfigs +kubeconfigs=("$HOME"/.kube/*config*(N)) +if (( ${#kubeconfigs[@]} )); then + export KUBECONFIG="${(j/:/)kubeconfigs}" +fi export HELM_CACHE_HOME=$HOME/.cache/helm export FZF_DEFAULT_OPTS="--height=50% --layout=reverse" export GPG_TTY=$(tty) @@ -45,7 +49,7 @@ export ZSH_HIGHLIGHT_MAXLENGTH=60 export GIT_EXTERNAL_DIFF=difft -FPATH="$brew_opt/share/zsh/site-functions:${ASDF_DIR}/completions:${FPATH}" +FPATH="$brew_opt/share/zsh/site-functions:${FPATH}" DISABLE_MAGIC_FUNCTIONS=true HISTSIZE=10000 # Number of commands to remember in memory (in-session) @@ -53,23 +57,27 @@ SAVEHIST=50000 # Number of commands to save to the history file HISTFILE=~/.zsh_history # File where history is stored -source $HOME/.antigen/antigen.zsh -antigen use oh-my-zsh -antigen bundle zsh-users/zsh-autosuggestions -antigen bundle zsh-users/zsh-syntax-highlighting -antigen bundle zsh-users/zsh-completions -antigen bundle git -antigen bundle kubectl -antigen bundle autojump -antigen bundle pip -antigen bundle asdf -antigen bundle nvim -antigen bundle darvid/zsh-poetry -antigen bundle Aloxaf/fzf-tab -antigen bundle vi-mode -#antigen bundle MichaelAquilina/zsh-autoswitch-virtualenv -# antigen bundle jeffreytse/zsh-vi-mode -antigen apply +if [ -f "$HOME/.antigen/antigen.zsh" ]; then + source "$HOME/.antigen/antigen.zsh" + antigen use oh-my-zsh + antigen bundle zsh-users/zsh-autosuggestions + antigen bundle zsh-users/zsh-syntax-highlighting + antigen bundle zsh-users/zsh-completions + antigen bundle git + antigen bundle kubectl + antigen bundle autojump + antigen bundle pip + antigen bundle nvim + antigen bundle darvid/zsh-poetry + antigen bundle Aloxaf/fzf-tab + antigen bundle vi-mode + #antigen bundle MichaelAquilina/zsh-autoswitch-virtualenv + # antigen bundle jeffreytse/zsh-vi-mode + antigen apply +else + mkdir $HOME/.antigen + curl -L git.io/antigen > $HOME/.antigen/antigen.zsh +fi # menu @@ -276,12 +284,12 @@ function bitnami_seal() { } zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS} -eval "$(starship init zsh)" -eval "$(direnv hook zsh)" +command -v starship >/dev/null 2>&1 && eval "$(starship init zsh)" +command -v direnv >/dev/null 2>&1 && eval "$(direnv hook zsh)" alias ta='tmux a' alias tl='tmux ls && read session && tmux attach -t ${session:-default} || tmux new -s ${session:-default}' -alias ls='lsd' +command -v lsd >/dev/null 2>&1 && alias ls='lsd' alias l='ls -l' alias la='ls -a' alias lla='ls -la' @@ -321,7 +329,7 @@ alias grep='ggrep' [ -f /usr/local/etc/profile.d/autojump.sh ] && . /usr/local/etc/profile.d/autojump.sh [ -f /usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/completion.zsh.inc ] && . /usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/completion.zsh.inc -source <(fzf --zsh) +command -v fzf >/dev/null 2>&1 && source <(fzf --zsh) bindkey -M viins '^b' vi-backward-char bindkey -M viins '^f' vi-forward-char diff --git a/Brewfile b/Brewfile index fae0f95..25e8ef3 100644 --- a/Brewfile +++ b/Brewfile @@ -1,8 +1,6 @@ tap "anomalyco/tap" tap "farion1231/ccswitch" -tap "homebrew/cask" tap "minio/stable" -tap "telepresenceio/telepresence" tap "vitobotta/tap" brew "act" brew "argocd" @@ -28,8 +26,8 @@ brew "helm" brew "helmfile" brew "iperf3" brew "k9s" -brew "kubernetes-cli" brew "kubectx" +brew "kubernetes-cli" brew "lrzsz" brew "lsd" brew "lua" @@ -43,10 +41,11 @@ brew "mysql-client@8.4" brew "neofetch" brew "neovim" brew "nexttrace" +brew "ripgrep" +brew "opencode" brew "postgresql@17", restart_service: :changed brew "rclone" brew "redis", restart_service: :changed -brew "ripgrep" brew "rustup" brew "starship" brew "swiftformat" @@ -55,73 +54,48 @@ brew "trzsz-ssh" brew "uv" brew "wget" brew "xcbeautify" -brew "xcode-build-server" -brew "yarn" brew "zsh" -brew "anomalyco/tap/opencode" brew "minio/stable/mc" -brew "telepresenceio/telepresence/telepresence-oss" brew "vitobotta/tap/hetzner_k3s" cask "1password" -cask "1password-cli" cask "alacritty" -cask "alma" cask "apifox" -cask "appcleaner" -cask "battle-net" cask "brave-browser" cask "farion1231/ccswitch/cc-switch" cask "chatgpt" cask "cherry-studio" +cask "clash-party" cask "claude" cask "claude-code" cask "codex" cask "codex-app" cask "copilot-cli" -cask "craft" -cask "cursor" -cask "daisydisk" cask "datagrip" -cask "eudic" -cask "figma" +cask "feishu" cask "font-jetbrains-mono-nerd-font" cask "font-maple-mono-nf-cn" -cask "gcloud-cli" -cask "ghostty" -cask "github-copilot-for-xcode" cask "google-chrome" -cask "google-drive" -cask "intellij-idea-ce" cask "jordanbaird-ice" cask "kiro" -cask "mac-mouse-fix" +cask "kiro-cli" cask "netnewswire" cask "notion" cask "obsidian" cask "only-switch" cask "orbstack" cask "raycast" -cask "sourcetree" cask "spotify" -cask "squirrel-app" cask "stats" -cask "steam" cask "telegram" cask "typeless" -cask "visual-studio-code" +cask "visual-studio-code@insiders" cask "wechat" -mas "HamHub", id: 6458691598 +mas "1Password for Safari", id: 1569813296 +mas "GarageBand", id: 682658836 +mas "iMovie", id: 408981434 mas "Keynote", id: 409183694 -mas "Lark", id: 6449830127 mas "Numbers", id: 409203825 mas "Pages", id: 409201541 -mas "PDFgear", id: 6469021132 -mas "Quantumult X", id: 1443988620 -mas "SenPlayer", id: 6443975850 -mas "Shadowrocket", id: 932747118 -mas "sing-box", id: 6673731168 -mas "The Unarchiver", id: 425424353 -mas "Xcode", id: 497799835 vscode "anthropic.claude-code" vscode "donjayamanne.githistory" vscode "dreamecho.git-blame-lens" diff --git a/alacritty/alacritty.toml b/alacritty/alacritty.toml index c53d0a1..8713a6e 100644 --- a/alacritty/alacritty.toml +++ b/alacritty/alacritty.toml @@ -8,7 +8,7 @@ live_config_reload = true [terminal] # OSC 52 剪贴板支持 osc52 = "CopyPaste" # Disabled, OnlyCopy, OnlyPaste, CopyPaste -shell = { program = "/bin/zsh", args = ["-c", "cd ~/Workspace 2>/dev/null || true; exec zsh"] } +shell = { program = "/bin/zsh" } [selection] semantic_escape_chars = ",│`|\"' ()[]{}<>" diff --git a/git/config b/git/config index fc1f696..5f28aee 100644 --- a/git/config +++ b/git/config @@ -1,10 +1,10 @@ [init] - defaultBranch = main + defaultBranch = main [user] - name = YOUR_NAME - signingkey = YOUR_SSH_SIGNING_KEY - email = YOUR_EMAIL + name = Li Tang + signingkey = ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPaVruhhL4O9BiAncnW1wH3jc7/hsqsXLknA8Xtnjjee + email = iamtangli42@gmail.com [commit] gpgsign = true @@ -20,7 +20,7 @@ [core] editor = nvim - excludesfile = ~/.config/git/.gitignore + excludesfile = /Users/d0zingcat/.config/git/.gitignore [pager] difftool = true diff --git a/nvim/lazy-lock.json b/nvim/lazy-lock.json index 4dd51a2..1a314b4 100644 --- a/nvim/lazy-lock.json +++ b/nvim/lazy-lock.json @@ -21,7 +21,7 @@ "guihua.lua": { "branch": "master", "commit": "87bea7b98429405caf2a0ce4d029b027bb017c70" }, "img-clip.nvim": { "branch": "main", "commit": "b6ddfb97b5600d99afe3452d707444afda658aca" }, "indent-blankline.nvim": { "branch": "master", "commit": "005b56001b2cb30bfa61b7986bc50657816ba4ba" }, - "lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" }, + "lazy.nvim": { "branch": "main", "commit": "85c7ff3711b730b4030d03144f6db6375044ae82" }, "lazygit.nvim": { "branch": "main", "commit": "a04ad0dbc725134edbee3a5eea29290976695357" }, "legendary.nvim": { "branch": "master", "commit": "6de819bc285eb8c420e49e82c21d5bb696b5a727" }, "lualine.nvim": { "branch": "master", "commit": "0c6cca9f2c63dadeb9225c45bc92bb95a151d4af" }, @@ -47,8 +47,8 @@ "nvim-lspconfig": { "branch": "master", "commit": "8adb3b5938f6074a1bcc36d3c3916f497d2e8ec4" }, "nvim-nio": { "branch": "master", "commit": "21f5324bfac14e22ba26553caf69ec76ae8a7662" }, "nvim-notify": { "branch": "master", "commit": "b5825cf9ee881dd8e43309c93374ed5b87b7a896" }, - "nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" }, - "nvim-treesitter-textobjects": { "branch": "master", "commit": "0f051e9813a36481f48ca1f833897210dbcfffde" }, + "nvim-treesitter": { "branch": "main", "commit": "42fc28ba918343ebfd5565147a42a26580579482" }, + "nvim-treesitter-textobjects": { "branch": "main", "commit": "0f051e9813a36481f48ca1f833897210dbcfffde" }, "nvim-ufo": { "branch": "main", "commit": "3c7a3570e9c9dc198a2ad4491b0b0e51c4d4ba08" }, "nvim-web-devicons": { "branch": "master", "commit": "1fb58cca9aebbc4fd32b086cb413548ce132c127" }, "oil.nvim": { "branch": "master", "commit": "5b6068aad7d2057dd399fac73b7fb2cdf23ccd6e" }, @@ -56,10 +56,9 @@ "plenary.nvim": { "branch": "master", "commit": "857c5ac632080dba10aae49dba902ce3abf91b35" }, "project.nvim": { "branch": "main", "commit": "8c6bad7d22eef1b71144b401c9f74ed01526a4fb" }, "promise-async": { "branch": "main", "commit": "119e8961014c9bfaf1487bf3c2a393d254f337e2" }, - "rainbow-delimiters.nvim": { "branch": "master", "commit": "55ad4fb76ab68460f700599b7449385f0c4e858e" }, + "rainbow-delimiters.nvim": { "branch": "master", "commit": "607a438d8c647a355749973fd295e33505afafde" }, "snacks.nvim": { "branch": "main", "commit": "bc0630e43be5699bb94dadc302c0d21615421d93" }, "sniprun": { "branch": "master", "commit": "a90c65846c3c18efc3f799d8b6dc26af9d4a69ed" }, - "statuscol.nvim": { "branch": "main", "commit": "c46172d0911aa5d49ba5f39f4351d1bb7aa289cc" }, "telescope-fzf-native.nvim": { "branch": "main", "commit": "1f08ed60cafc8f6168b72b80be2b2ea149813e55" }, "telescope.nvim": { "branch": "master", "commit": "b4da76be54691e854d3e0e02c36b0245f945c2c7" }, "todo-comments.nvim": { "branch": "main", "commit": "304a8d204ee787d2544d8bc23cd38d2f929e7cc5" }, diff --git a/setup.sh b/setup.sh index 5d14c2e..55fa717 100755 --- a/setup.sh +++ b/setup.sh @@ -34,6 +34,7 @@ FILES=( # Config directories to link CONFIG_FILES=( + alacritty git nvim tmux @@ -168,15 +169,6 @@ function cmd_init() { print_success "Antigen already installed" fi - # Install asdf - if [ ! -d "$HOME/.asdf" ]; then - print_warning "Installing asdf..." - git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.14.0 - print_success "asdf installed" - else - print_success "asdf already installed" - fi - # Create necessary directories print_warning "Creating directories..." mkdir -p "$HOME/.config/" @@ -195,6 +187,10 @@ function cmd_init() { function cmd_install() { print_header "Installing Dotfiles Symlinks" + + mkdir -p "$HOME_DIR/.config" + mkdir -p "$HOME_DIR/.ssh" + mkdir -p "$HOME_DIR/.kube" # Link files print_warning "Linking files..." @@ -210,8 +206,7 @@ function cmd_install() { # Link config directories print_warning "Linking config directories..." for i in "${CONFIG_FILES[@]}"; do - if [ -d "$WORKING_DIR/$i" ]; then - mkdir -p "$HOME_DIR/.config" + if [ -e "$WORKING_DIR/$i" ]; then ln -svfn "$WORKING_DIR/$i" "$HOME_DIR/.config/$i" print_success "Linked: .config/$i" else @@ -244,9 +239,13 @@ function cmd_install() { if command_exists fzf; then print_success "fzf already installed" elif command_exists brew; then - print_warning "Installing fzf..." - $(brew --prefix)/opt/fzf/install --key-bindings --completion 2>/dev/null || true - print_success "fzf installed" + if [ -x "$(brew --prefix)/opt/fzf/install" ]; then + print_warning "Installing fzf shell integration..." + "$(brew --prefix)/opt/fzf/install" --key-bindings --completion --no-update-rc 2>/dev/null || true + print_success "fzf shell integration installed" + else + print_warning "fzf binary not found yet; run: brew bundle install" + fi fi print_header "Installation Complete!" @@ -603,14 +602,14 @@ function cmd_check() { local git_email=$(git config --file "$HOME_DIR/.gitconfig" user.email 2>/dev/null || echo "") echo -n " user.name: " - if [ "$git_name" == "YOUR_NAME" ] || [ -z "$git_name" ]; then + if [[ "$git_name" == "YOUR_NAME" || -z "$git_name" ]]; then print_warning "not configured" else print_success "$git_name" fi echo -n " user.email: " - if [ "$git_email" == "YOUR_EMAIL" ] || [ -z "$git_email" ]; then + if [[ "$git_email" == "YOUR_EMAIL" || -z "$git_email" ]]; then print_warning "not configured" else print_success "$git_email"