Automated setup script for a Fish development environment following XDG Base Directory convention. All configs live under ~/.config/.
- Fish Shell — Modern, user-friendly shell with excellent auto-completion
- Fisher — Fish plugin manager
- Starship Prompt — Fast, customizable cross-shell prompt
- Git — User settings, LFS, commit template, aliases (
sync,graph) - fnm — Fast Node Manager
- uv — Python package manager
- Go — Go programming language (latest tarball)
- opencode — AI coding assistant (with Context7 MCP)
- bat — Syntax-highlighting cat replacement
- eza — Modern
lsreplacement with icons and git integration - Vim (optional) — Optimized settings with habamax colorscheme
- Tmux (optional) — Terminal multiplexer with TPM and solarized theme
- fcitx5 (optional) — Input method (Boshiamy, Mozc, shortcuts)
- btop (optional) — System monitor preferences
git clone https://github.com/wade00754/dotfiles.git
cd dotfiles
./setup.shFor non-interactive mode (installs all optional tools):
./setup.sh -yThese are always installed without prompting:
| Tool | Description |
|---|---|
| Fish | Shell |
| Fisher | Fish plugin manager |
| Starship | Prompt |
| Git | Version control |
| fnm | Node version manager |
| uv | Python package manager |
| Go | Programming language |
| opencode | AI coding assistant |
| bat | Syntax-highlighting cat |
| eza | Modern ls replacement |
After installing the required tools, you will be prompted to select optional tools:
| # | Tool | Description |
|---|---|---|
| 1 | Vim | Text editor |
| 2 | Tmux | Terminal multiplexer (with TPM) |
| 3 | fcitx5 | Input method framework |
| 4 | btop | System monitor |
Enter numbers separated by commas (e.g., 1,2) or all to install everything.
All configs are stored under .config/ and deployed to ~/.config/:
| Repo Path | Deployed To | Notes |
|---|---|---|
.config/fish/config.fish |
~/.config/fish/config.fish |
Fish shell settings (starship, abbr, bat/eza) |
.config/fish/fish_plugins |
~/.config/fish/fish_plugins |
Fisher plugin list |
.config/fish/conf.d/fnm.fish |
~/.config/fish/conf.d/fnm.fish |
fnm PATH and env |
.config/fish/conf.d/uv.env.fish |
~/.config/fish/conf.d/uv.env.fish |
uv PATH and env |
.config/fish/conf.d/go.fish |
~/.config/fish/conf.d/go.fish |
Go PATH |
.config/fish/conf.d/opencode.fish |
~/.config/fish/conf.d/opencode.fish |
opencode PATH |
.config/git/config |
~/.config/git/config |
Git settings & aliases |
.config/git/commit-template |
~/.config/git/commit-template |
Conventional commit template |
.config/opencode/opencode.json |
~/.config/opencode/opencode.json |
opencode settings (API key prompted during setup) |
.config/starship.toml |
~/.config/starship.toml |
Starship prompt |
.config/vim/vimrc |
~/.config/vim/vimrc |
Vim 9.1+ XDG native (optional) |
.config/tmux/tmux.conf |
~/.config/tmux/tmux.conf |
tmux 3.1+ XDG native (optional) |
.config/fcitx5/ |
~/.config/fcitx5/ |
Input method config, profile, confs (optional) |
.config/btop/btop.conf |
~/.config/btop/btop.conf |
System monitor (optional) |
Existing XDG config directories are automatically backed up to ~/.config-backup-<timestamp>/<subdir>/ before being overwritten, so you can restore previous settings if needed.
Legacy dotfiles (~/.gitconfig, ~/.vimrc, ~/.tmux.conf) are also automatically backed up with a .bak suffix if found, since they override the XDG paths.
The following abbreviations are set up in config.fish:
| Abbreviation | Expands to | Description |
|---|---|---|
cat |
batcat / bat |
Syntax-highlighting cat (auto-detects binary name) |
ls |
eza --icons |
Colorful file listing with icons |
ll |
eza -l --icons --git |
Long listing with git info |
la |
eza -a --icons --git |
Show all files with git info |
lla |
eza -la --icons --git |
Long listing of all files with git info |
lt |
eza --tree --icons |
Tree view with icons |
| Alias | Command | Description |
|---|---|---|
git sync |
!git fetch -p origin main:main && git rebase main |
Sync with origin/main |
git graph |
!git log --graph --oneline --decorate --all |
Visual branch history |
- Ubuntu / Debian / Pop!_OS
- Fedora
- CentOS / RHEL
- Arch / Manjaro
- Alpine Linux
- macOS