Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Dotfiles

Cross-platform terminal environment setup — Neovim, Oh My Posh, and dev tools with psmux (Windows) or tmux (Linux/WSL).

Quick Start

Windows (PowerShell):

git clone <this-repo> ~/repos/dotfiles
cd ~/repos/dotfiles
.\setup.ps1

Linux / WSL (zsh):

git clone <this-repo> ~/repos/dotfiles
cd ~/repos/dotfiles
chmod +x setup.sh scripts/*.sh scripts/fzf/*.sh
./setup.sh

What It Installs

Tool Windows Linux/WSL Purpose
Neovim scoop apt Text editor (aliased as vim)
fzf scoop apt Fuzzy finder
ripgrep scoop apt Fast search (rg)
sd scoop cargo Find & replace (sed alternative)
glow scoop apt Markdown renderer
Rust rustup rustup Toolchain (needed by sd, omp-manager)
psmux scoop Terminal multiplexer (Windows)
tmux apt Terminal multiplexer (Linux)
Oh My Posh scoop installer script Prompt theme engine
MesloLGS Nerd Font oh-my-posh oh-my-posh Icons for Oh My Posh + terminal

Multiplexer Plugins

Windows — psmux (declared in config/.psmux.conf, installed via tmuxpanel):

  • ppm — Plugin package manager
  • psmux-pain-control — Pane/window key bindings
  • psmux-prefix-highlight — Visual prefix indicator
  • psmux-sidebar — Sidebar panel
  • psmux-git-status — Git status in status bar
  • psmux-continuum — Auto save/restore sessions
  • psmux-resurrect — Session persistence

Linux/WSL — tmux (declared in config/.tmux.conf, installed via tpm):

  • tmux-pain-control — Pane/window key bindings
  • tmux-prefix-highlight — Visual prefix indicator
  • tmux-continuum — Auto save/restore sessions
  • tmux-resurrect — Session persistence

Key Bindings

All prefixed with Ctrl+b unless noted (same on both platforms):

Key Action
e Reload config
P Reload shell profile
| Split pane horizontally
- Split pane vertically
Shift+←/→ Previous/next window (no prefix)
< / > Move current window left/right
s Fuzzy switch session (fzf)
w Fuzzy switch window (fzf)
g Fuzzy switch pane (fzf)
/ Search scrollback
r Fuzzy find & replace across files (fzf)

Neovim

Config is config/init.lua (Lua). Uses lazy.nvim for plugin management.

Plugins: Gruvbox theme (dark, hard contrast) · Telescope (fuzzy finder) · Rustaceanvim (Rust LSP, code actions, debugging) · nvim-treesitter (syntax highlighting) · C# LSP via roslyn.nvim (Roslyn language server)

Note: roslyn.nvim requires Neovim ≥ 0.12 and the .NET SDK. The Roslyn server is installed as a global dotnet tool (roslyn-language-server) by install-roslyn.ps1 / .sh.

Config Files

File Windows Destination Linux Destination
config/.psmux.conf ~/.psmux.conf
config/.tmux.conf ~/.tmux.conf
config/init.lua ~/AppData/Local/nvim/init.lua ~/.config/nvim/init.lua
config/.ripgreprc ~/.ripgreprc ~/.ripgreprc

Making Changes

This setup is incremental — edit configs or add plugins in the repo, then re-run:

.\setup.ps1          # Windows
./setup.sh           # Linux / WSL
  • Install scripts skip already-installed tools
  • Config files are synced (repo → home) on every run
  • New plugins are installed automatically

Repo Structure

dotfiles/
├── setup.ps1                       # Main entry point (Windows)
├── setup.sh                        # Main entry point (Linux/WSL)
├── config/
│   ├── .psmux.conf                 # Psmux config + plugin list (Windows)
│   ├── .tmux.conf                  # Tmux config + plugin list (Linux)
│   ├── .ripgreprc                  # Ripgrep config (cross-platform)
│   └── init.lua                    # Neovim config (cross-platform)
└── scripts/
    ├── install-scoop.ps1           # Scoop package manager (Win)
    ├── install-packages.sh         # apt packages (Linux)
    ├── install-tools.ps1           # Dev tools via scoop (Win)
    ├── install-psmux.ps1           # psmux via scoop (Win)
    ├── install-tmux.sh             # tmux + tpm (Linux)
    ├── install-psmux-plugins.ps1   # psmux plugins (Win)
    ├── install-tmux-plugins.sh     # tmux plugins via tpm (Linux)
    ├── install-omp-manager.ps1     # oh-my-posh for PowerShell (Win)
    ├── install-omp.sh              # oh-my-posh for zsh (Linux)
    ├── install-font.ps1            # Nerd Font + Windows Terminal (Win)
    ├── install-font.sh             # Nerd Font + fontconfig (Linux)
    ├── install-rust.ps1            # Rust via rustup (Win)
    ├── install-rust.sh             # Rust via rustup (Linux)
    ├── setup-vim.ps1               # Neovim config sync (Win)
    ├── setup-vim.sh                # Neovim config sync (Linux)
    ├── install-roslyn.ps1          # C# LSP (Roslyn) via dotnet tool (Win)
    ├── install-roslyn.sh           # C# LSP (Roslyn) via dotnet tool (Linux)
    ├── install-zig.ps1             # zig + sets CC=zig cc (Win, for tree-sitter)
    └── fzf/
        ├── switch-session.ps1/.sh  # Fuzzy session switcher
        ├── switch-window.ps1/.sh   # Fuzzy window switcher
        ├── switch-pane.ps1/.sh     # Fuzzy pane switcher
        ├── find-replace.ps1/.sh    # Interactive find & replace
        └── preview-diff.ps1/.sh    # Diff preview for find-replace

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages