Personal development environment configuration for macOS (primary) and Linux.
- macOS (recommended) or Linux
- Git
- Xcode Command Line Tools (macOS):
xcode-select --install
git clone --recurse-submodules https://github.com/ininit/dotfiles.git ~/.dotfiles
cd ~/.dotfiles
# Copy and edit local git identity (required)
cp git/gitconfig.local.example ~/.gitconfig.local
./setup.shRestart your terminal after setup so Fish becomes the default shell.
| Component | Description |
|---|---|
| Fish | Default shell with Fisher plugins (z) and Starship prompt |
| Tmux | Terminal multiplexer with TPM plugins |
| Neovim | Lua config with lazy.nvim |
| Homebrew | CLI tools and GUI apps via Brewfile |
| Node | Volta + Bun + pnpm (global packages via scripts/npm.sh) |
| Git | Global config, Commitizen, global gitignore |
| Rime | 雾凇拼音 input method config (macOS, submodule) |
.dotfiles/
├── setup.sh # Main installer
├── Brewfile # Homebrew packages (declarative)
├── scripts/
│ ├── link.sh # Symlink configs into $HOME
│ ├── brew.sh # Install Homebrew packages
│ ├── npm.sh # Global pnpm packages
│ ├── update.sh # Upgrade packages & submodules
│ └── backup.sh # Backup existing configs before linking
├── config/
│ ├── fish/ # Fish shell
│ ├── nvim/ # Neovim (lazy.nvim)
│ └── tmuxinator/ # Tmux session templates
├── git/ # Git global config
├── symlink/ # EditorConfig, ESLint, Prettier
└── tmux/ # Tmux config + TPM submodule
| Script | Purpose |
|---|---|
./setup.sh |
First-time install: submodules, Fish, symlinks, packages |
./scripts/update.sh |
Update submodules, Homebrew, Fisher plugins |
./scripts/backup.sh |
Backup existing dotfiles before manual changes |
./scripts/link.sh |
Re-create symlinks only |
Plugin manager: lazy.nvim. Run :Lazy to manage plugins.
Key LSP servers (via Mason): lua_ls, ts_ls, jsonls
Formatting/linting: Prettier + ESLint via none-ls.nvim
Personal identity is stored in ~/.gitconfig.local (not committed):
cp git/gitconfig.local.example ~/.gitconfig.local
# Edit name and emailOptional proxy config: ~/.gitconfig_proxy
Optional Fish proxy: config/fish/functions/proxy.fish (gitignored)
cd ~/.dotfiles
git pull --recurse-submodules
./scripts/update.sh- tmux-plugins/tpm — Tmux plugin manager
- iDvel/rime-ice — Rime input schema
Initialize manually if cloned without --recurse-submodules:
git submodule update --init --recursive- Node version management uses Volta only (NVM removed).
- Homebrew packages are declared in
Brewfile; runbrew bundle dumpto export changes. exahas been replaced with eza.- Neovim migrated from Packer to lazy.nvim; deprecated plugins updated (
lua_ls,ts_ls, none-ls.nvim, copilot.lua).