This repo manages more than Neovim — it bootstraps a full shell/terminal environment
via install.sh. The plugin/Neovim sections below this point are auto-generated by
Dotfyle; the layout table here is maintained by hand.
| Path | What it is |
|---|---|
install.sh |
Idempotent installer. Sets up deps, shell, configs, and tpm. Run ./install.sh help for targets. |
gruvim/ |
Neovim config (linked to ~/.config/nvim). The active config; see sections below. |
tmux/ |
tmux.conf + layout scripts (linked to ~/.config/tmux). Plugins managed by tpm under tmux/plugins/ (git-ignored). |
zsh/, bash/ |
Shell framework config. Zsh uses oh-my-zsh + Powerlevel10k with zsh/p10k.zsh linked to ~/.p10k.zsh; bash uses oh-my-bash. Both source common.sh. |
common.sh |
Required tracked shell layer shared by bash and zsh. |
ghostty/ |
Ghostty terminal config (linked to ~/.config/ghostty when ghostty is present). |
scripts/ |
Helper scripts, e.g. toggle-theme (switches ghostty + tmux between light/dark). |
Configs are applied as symlinks into ~/.config, so edits in this repo take effect live.
See Install Instructions for bootstrap and per-target usage.
Install requires Neovim 0.9+. Always review the code before installing a configuration.
Clone the repository and run the installer:
git clone git@github.com:grrru/dotfiles ~/dotfiles
cd ~/dotfiles
./install.shThe installer installs the basic CLI dependencies (git, curl, zsh, tmux, neovim, lazygit, ripgrep, fd, gh, fzf, zoxide, make, tree-sitter-cli), installs oh-my-bash as a bash bridge and oh-my-zsh with Powerlevel10k as the destination shell, then links the selected Neovim config to ~/.config/nvim.
Shell configuration is split into tracked repo layers and machine-local rc files:
| Layer | File | Tracked | Role |
|---|---|---|---|
| Entry point | ~/.bashrc, ~/.zshrc |
No | Machine-local setup, secrets, runtime paths, then source the repo config. |
| Shell framework | bash/bash_config.sh, zsh/zsh_config.sh |
Yes | oh-my-bash or oh-my-zsh, Powerlevel10k, fzf, PATH cleanup. |
| Shared common | common.sh |
Yes | Portable helpers and defaults shared by bash and zsh. |
common.sh is required and is sourced by both shell framework configs. Keep it portable:
helpers such as add_path, ecph, baseline user bin paths, and locale belong here.
Machine-local settings belong in the rc files, not in common.sh: Go under ~/sdk,
Android SDK paths, nvm setup, private aliases, company hosts, and secrets.
Language runtimes are managed per-tool rather than by a version manager: go is installed under ~/sdk, node via nvm, python via the system/uv.
You can also run a specific install target:
./install.sh deps
./install.sh shell # bash bridge + zsh setup
./install.sh bash
./install.sh zsh
./install.sh config
./install.sh tpmTo install user-level files for a different account while running from a sudo-capable account:
./install.sh --user target_user
./install.sh --user target_user configThe dotfiles checkout must be readable by target_user because configs are linked with symlinks.
Open Neovim after installation:
nvimInstall gruvim-managed Mason packages from Neovim:
:GruvimMasonInstallThe installer links gruvim as the default Neovim config.
- gbprod/yanky.nvim
- echasnovski/mini.pairs
- windwp/nvim-ts-autotag
- nvim-treesitter/nvim-treesitter-context
- gopls
- html
- jsonls
- lua_ls
- yamlls
This readme was generated by Dotfyle