My yet another try to maintain my dotfiles online.
Personal configuration for a Linux development environment: shell, prompt, editor, git, and terminal. The goal is a single cloneable source of truth that makes it straightforward to restore a familiar setup on a new machine.
| Path | Description |
|---|---|
zshrc |
Interactive zsh: PATH, history, completion, aliases, fzf, zoxide, plugins, Starship |
gitignore_global |
Global ignore patterns |
config/starship.toml |
Starship prompt (Catppuccin Mocha) |
config/nvim/ |
Neovim (LazyVim), Catppuccin, Go/Java helpers, DAP, Telescope |
config/kitty/ |
Kitty terminal font, opacity, and Catppuccin Mocha colors |
install.sh |
Symlink installer with timestamped backups |
Secrets, credentials, shell history, WakaTime config, and .env files are intentionally not tracked.
Reinstalls and spare machines should not require rebuilding aliases, prompt settings, and editor wiring from scratch. Keeping this layer in version control turns that work into a clone and a short install.
git clone git@github.com:Saumya40-codes/dotfiles.git ~/dotfiles
cd ~/dotfiles
./install.sh
exec zshinstall.sh will:
- Create parent directories under
$HOMEwhen needed. - Move any existing target to
*.bak.<timestamp>before linking. - Symlink tracked files from this repository into the usual locations.
Review the script before running it if you already manage configs manually, and link only the pieces you want.
Not all of these are required, but the configs work best when they are available:
- Shell: zsh, Starship, zsh-autosuggestions, zsh-syntax-highlighting, zsh-history-substring-search, zsh-completions
- CLI: fzf, ripgrep, fd, bat, eza, zoxide, delta (git-delta)
- Editor: Neovim 0.11+, LazyVim (bootstrapped on first open via lazy.nvim)
- Terminal: Kitty with a Nerd Font (for example JetBrainsMono Nerd Font Mono)
- Languages (as needed): Go, JDK, Node, Python with
ruffanddebugpy, rustup, rbenv
On Ubuntu or Debian:
sudo apt update
sudo apt install zsh fzf ripgrep fd-findModern CLI tools can also be installed as release binaries into ~/.local/bin.
- Shell and terminal: zsh, Starship, and Kitty with the Catppuccin Mocha theme.
- Editor: Neovim 0.11+ with LazyVim, LSP/DAP tooling, and Go, Java, Python, and Rust customizations.
- AI coding: OpenCode is installed under
~/.opencode/bin;zshrcadds it toPATH. - Version control: Git identity and preferences are local; the global ignore file is tracked here.
- Language tooling: Go, JDK, Node, Python with Ruff and debugpy, rustup, and rbenv are used as needed.
LazyVim-based setup with Catppuccin Mocha, language extras (Java, Docker, JSON, YAML, Python, Rust, and related), ray-x/go.nvim, toggleterm, and DAP. After install, open Neovim once and let :Lazy finish bootstrapping. Use :Mason for language servers and formatters.
Useful keys (see also config/nvim/README.md):
<leader>fwlive grep,<leader>fvfind files<leader>dbbreakpoint,<F5>continue<leader>gotGo test,<leader>rjJava scratch run<leader>th/<leader>tv/<leader>tfterminals
Paths in this repository mirror their install destinations so install.sh stays small. This is a personal baseline for shell, prompt, git, and editor configuration, not a full desktop or OS image.
Keep Git identity, tokens, and private keys in untracked local configuration or a secret store.
Provided as-is for personal reuse. Adapt as needed.