Personal cross-platform dotfiles for Windows, Linux/WSL, and macOS.
If you are onboarding to this setup, start here:
CHEATSHEET.md(daily commands + workflow)
- What this repo includes
- Quick start
- Platform installs
- AI coding CLIs and skills
- Shell setup
- Neovim and editor workflow
- Python environments (uv first, conda legacy)
- Optional webdev stack
- Tooling and command profile
- Windows extras
- Troubleshooting
- Shell configs:
- Zsh:
.zshrc,.zshenv,.zsh/ - Bash:
.bashrc - PowerShell:
.windows/powershell/profile.ps1
- Zsh:
- Prompt config:
.config/starship.toml - Package baseline for macOS:
Brewfile,setup.sh - AI assistant config/skills:
.claude/skills/ - Optional Windows app/config customizations in
.windows/
Core CLI stack used by these configs:
starshipzoxidefzfag(The Silver Searcher)bateza/exaneovimuv(primary Python package/project workflow)ruff(installed viauv tool)
Conda remains supported for legacy environments.
- Clone this repo
git clone https://github.com/JDLanctot/dotfiles.git ~/dotfiles-
Install platform tools from Platform installs
-
Link/copy the shell files you want from this repo into your home directory
-
Restart your terminal and verify:
zoxide --version
fzf --version
ag --version
bat --version
nvim --version
uv --version
ruff --version- Open
CHEATSHEET.mdand test the daily workflows (..,fzn,ca,caz,z <query>)
Install dependencies with Chocolatey:
choco install starship zoxide fzf ag bat
Install-Module -Name PSFzfInstall uv (official installer):
irm https://astral.sh/uv/install.ps1 | iex
uv tool install ruffIf script execution blocks your profile:
Set-ExecutionPolicy RemoteSignedsudo apt update
sudo apt install zsh fzf zoxide bat silversearcher-ag eza neovimInstall uv (official installer):
curl -LsSf https://astral.sh/uv/install.sh | sh
uv tool install ruffOptional but expected by current zsh setup:
sudo apt install zsh-autosuggestionsThe repo includes a Brew bootstrap script and package manifest:
./setup.shThis installs Homebrew (if needed) and applies Brewfile.
uv is included in this repo's Brewfile.
Ruff install:
uv tool install ruffThis repo supports both Claude CLI and OpenCode. Install at least one, then sync local skills.
Official installers:
- macOS / Linux / WSL:
curl -fsSL https://claude.ai/install.sh | bash- Windows PowerShell:
irm https://claude.ai/install.ps1 | iexAlternative package manager options are available in official docs.
Official installers:
- Cross-platform install script:
curl -fsSL https://opencode.ai/install | bash- Node-based install:
npm install -g opencode-ai- Windows alternatives include
choco install opencode.
claude --version
opencode --versionIf this repo includes .claude/skills, copy or symlink it into your user-level Claude directory.
Linux/macOS:
mkdir -p ~/.claude
ln -sfn ~/dotfiles/.claude/skills ~/.claude/skillsPowerShell:
New-Item -ItemType Directory -Force -Path "$HOME\.claude" | Out-Null
New-Item -ItemType SymbolicLink -Force -Path "$HOME\.claude\skills" -Target "$HOME\dotfiles\.claude\skills"After linking, restart Claude/OpenCode so the skills are picked up.
Use the shell profile for your platform:
- Zsh:
.zshrc+.zshenv+.zsh/ - Bash:
.bashrc - PowerShell:
.windows/powershell/profile.ps1
Recommended approach: symlink from your home directory to files in this repo.
ln -sfn ~/dotfiles/.zshrc ~/.zshrc
ln -sfn ~/dotfiles/.zshenv ~/.zshenv
ln -sfn ~/dotfiles/.zsh ~/.zsh
ln -sfn ~/dotfiles/.bashrc ~/.bashrc
ln -sfn ~/dotfiles/.config/starship.toml ~/.config/starship.tomlNew-Item -Type Directory -Force "$HOME\Documents\PowerShell" | Out-Null
New-Item -ItemType SymbolicLink -Force -Path "$HOME\Documents\PowerShell\Microsoft.PowerShell_profile.ps1" -Target "$HOME\dotfiles\.windows\powershell\profile.ps1"Reload profiles:
- Bash:
source ~/.bashrc - Zsh:
source ~/.zshrc - PowerShell:
. $PROFILE
- Open a project:
nvim . - Fuzzy open into Neovim:
fzn - In PowerShell, fuzzy open into VS Code:
fzc
Neovim is installed as part of the managed package set (Brewfile on macOS, apt/choco on Linux/Windows).
Default approach for new work: use uv + pyproject.toml.
Recommended modern Python protocol:
- Project metadata and dependencies in
pyproject.toml(PEP 621 style). - Locked, reproducible envs with
uv.lock. - Run tools and scripts through
uv run ....
Typical new-project flow:
uv init my_project --python 3.12
cd my_project
uv add ruff pytest
uv sync
uv run pytestTypical existing-project flow:
uv sync
uv run python -m your_packageLint/format workflow with Ruff:
uv run ruff check .
uv run ruff format .When you need legacy Conda workflows (older repos, CUDA stacks, pinned environments), Conda helpers are still available in shell configs:
ca <env>activate Conda envcaz <env-or-query>jump + activate
Conda is optional and no longer the default recommendation for new projects.
Use this if you want frontend/infrastructure tooling beyond the base shell setup.
Includes:
biome(JS/TS formatter + linter)awsCLIsst
Prereq:
- Node.js (recommend Node 20+;
nvmis already wired in shell configs)
choco install awscli
npm install -g @biomejs/biome sstsudo apt install awscli
npm install -g @biomejs/biome sstbrew install awscli
npm install -g @biomejs/biome sstVerify:
biome --version
aws --version
sst versionThe setup is tuned for fast navigation and fuzzy workflows:
- Directory movement:
..,...,....
- Smart jump:
z <query>(zoxide)
- Fuzzy picking:
fzf+batpreview- default file source uses
agviaFZF_DEFAULT_COMMAND
- Conda helpers:
ca <env>activate (legacy Conda repos)caz <env-or-query>jump then activate (legacy Conda repos)
- uv/Ruff helpers:
uvssync dependenciesuvrrun any command viauv runuvtrun pytest viauv run pytestrufffixrun Ruff autofix + format
For full day-to-day command reference, use CHEATSHEET.md.
The .windows/ directory contains optional app-specific configs and tweaks for tools such as:
- Windows Terminal
- Firefox
- Obsidian
- Steam
- Discord
- Zebar/GlazeWM
- Registry tweak snippets under
.windows/_reg/
These are optional and can be applied selectively.
fzfopens but list is empty:- confirm
agis installed and onPATH
- confirm
- preview pane in fuzzy finder is broken:
- confirm
batis installed and onPATH
- confirm
- profile updates not loading:
- source profile manually (see Shell setup)
- WSL + VS Code interop issues:
- check
.zsh/wsl2fix.zsh
- check
MIT. See LICENSE.