My cross-platform dotfiles for neovim, tmux, Zsh, Windows Terminal, and friends.
Note
to use these dotfiles, clone to local, then run the relevant symlinks to link the files. System specific instructions below...
Install Linux distro on WSL (I'm using Fedora): wsl --install FedoraLinux-42
clone this repo to ~/ then add manual symlinks from source (i.e. this repo) to link (i.e. the ~/.config/ directory) where needed (.zshrc, nvim/):
ln -s ~/dots/source ~/.config/link
sudo dnf install zsh git zsh nvim tmux ripgrep fzf fd gcc luarocks gh wget
- From Fedora (WSL), install zsh:
sudo dnf install zshand confirm version:zsh --version - Make zsh the default shell: (on Fedora):
sudo chsh $USERand when prompted give the path: `/bin/zsh' - Restart terminal, check shell and version:
echo $SHELL && $SHELL --version
- Install Oh My Zsh:
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" - Remove the new .zshrc:
rm .zshrc - Symlink to home:
ln -s ~/dots/zsh/.zshrc ~/.zshrc
-
Fast syntax highlighting:
git clone https://github.com/zdharma-continuum/fast-syntax-highlighting.git \ ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/fast-syntax-highlighting -
Autosuggestions:
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions -
Autocomplete:
git clone https://github.com/marlonrichert/zsh-autocomplete ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autocomplete -
zoxide
curl -sSfL https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | sh
zsh-vi-mode git clone https://github.com/jeffreytse/zsh-vi-mode \ $ZSH_CUSTOM/plugins/zsh-vi-mode
This repo's .zshrc file takes care of adding the plugins and sources.
Oh My Posh - aesthetic prompts
- If not already there,
mkdir ~/bin - Install Oh-My-Posh:
curl -s https://ohmyposh.dev/install.sh | bash -s - Restart shell:
exec zsh - Again, the .zshrc should take care of initialising OMP with my custom .yaml theme.
settings.json can be symlinked to: $HOME/AppData/Local/Packages/Microsoft.WindowsTerminal_8wekyb3d8bbwe/LocalState/settings.json or similar. In Powershell: symlinks/link-win-terminal.ps1
Prefix: `C-a`` (Ctrl+a).
Windows over splits by default (clean tabs workflow).
sessionize → open/attach 3-window layout: nvim, term, scratch.
sessionize --pick → fuzzy-pick a project (uses zoxide ranking if available).
Recommended binds (add to ./tmux/tmux.conf if not present):
# Pick a project with fzf/zoxide
bind P run-shell 'sessionize --pick'
# Prompt for a directory (or "name /path")
bind s command-prompt -p "session dir (or 'name /path'):" "run-shell 'sessionize %%'"All LazyVim, baby...
Oh-My-Zsh with common plugins (syntax highlighting, autosuggestions, autocomplete).
zoxide integration for quick directory jumps.
Oh-My-Posh prompt (optional) with a custom theme.
Curated settings.json (fonts, color, panes, profiles) for a consistent look across machines.
