My personal configurations for a "productive"" development environment, previously managed with Stow (you can still find the branch), now is an idempotent ansible playbook!
This setup configures: Zsh (with Zinit), Tmux (with TPM), Git, SSH, uv, Neovim, Komorebi (Windows), and other CLI tools.
Lots of inspiration has been taken from this highly suggested video: My Neovim & Tmux Terminal Dev Workflow as a Principal Engineer
On a fresh Arch install, the one-liner requires a non-root user profile with sudo
access and git
installed. Follow these steps before running the installer.
1. As root
, Install Prerequisites:
For WSL, enter as root with wsl -u root
.
pacman -Syu --noconfirm sudo git vim
2. Create a Sudo-Enabled User:
Replace ivan
with your username. This creates the user and adds them to the wheel
group for sudo
permissions.
useradd -m -G wheel ivan
passwd ivan
3. Enable Sudo Access:
Use visudo
to safely edit the configuration.
EDITOR=vi visudo
Uncomment the following line by removing the #
:
%wheel ALL=(ALL:ALL) ALL
4. (WSL Only) Set Default User:
Create or edit /etc/wsl.conf
to log in as your user automatically.
vi /etc/wsl.conf
Add this content, replacing ivan
with your username:
[user]
default = ivan
From PowerShell, run wsl --shutdown
and restart your Arch terminal.
You are now logged in as your user and ready to run the one-line installer.
Complete setup with single curl command:
bash <(curl -sSL https://raw.githubusercontent.com/LittleHaku/dotfiles/main/bin/dotfiles)
Or with wget:
bash <(wget -qO- https://raw.githubusercontent.com/LittleHaku/dotfiles/main/bin/dotfiles)
This single command will detect your OS (Ubuntu/Arch), install required packages, generate SSH keys, guide you through GitHub setup, clone the dotfiles repository, and run the complete Ansible playbook to configure your environment with Zsh, Tmux, Git, and all development tools.
On Linux, the dotfiles binary is added to your PATH, so you can run dotfiles
from anywhere to update your configuration.
In admin rights PowerShell:
Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/LittleHaku/dotfiles/main/bootstrap.ps1'))
For automated installations without prompts, you can specify different modes by appending the mode name right after the command:
- Complete Installation - Installs everything:
complete
- Developer Mode - Perfect for office/work environments (productivity + development tools, excludes gaming):
developer
- Minimal Installation - Only essential development tools:
minimal
- Complete: All applications available in the script
- Developer: VS Code, Docker, WezTerm, Todoist, Obsidian, Zotero, Notion, 7-Zip, VLC, Zen Browser, PowerToys, AutoHotkey, Komorebi, Windows Terminal, Spotify
- Minimal: VS Code, WezTerm, 7-Zip, Zen Browser, PowerToys
If you have the repository cloned locally:
# Interactive mode
.\bootstrap.ps1
# Specific modes
.\bootstrap.ps1 complete
.\bootstrap.ps1 developer
.\bootstrap.ps1 minimal
My Tmux leader key is Ctrl+s
. Tmux configuration is at ~/.config/tmux/tmux.conf
(managed by stow
).
Windows and panes start at 1 instead of 0 for easier keyboard navigation.
System Management:
- Reload Config:
Ctrl+s, r
- Reloads tmux configuration with confirmation - Install Plugins:
Ctrl+s, I
(capital 'i') - Install TPM plugins after adding them to config
Window Management:
- Quick Switch:
Alt+H
/Alt+L
- Previous/next window (no prefix needed) - Create Window:
Ctrl+s, c
- Close Window:
Ctrl+s, &
- Rename Window:
Ctrl+s, ,
Pane Management:
- Split Horizontal:
Ctrl+s, |
- Split pane horizontally (intuitive) - Split Vertical:
Ctrl+s, -
- Split pane vertically (intuitive) - Navigate Panes:
Ctrl+s, h/j/k/l
- Vim-style pane navigation (works without leader when not in neovim) - Resize Panes:
Ctrl+s, Shift+H/J/K/L
- Resize panes (repeatable) - Close Pane:
Ctrl+s, x
Copy Mode (Vim-style):
- Enter Copy Mode:
Ctrl+s, [
- Start Selection:
v
(in copy mode) - Rectangle Selection:
Ctrl+v
(in copy mode) - Copy Selection:
y
(in copy mode) - Paste:
Ctrl+s, ]
Theme: Uses Dracula theme with CPU usage, RAM usage, and time display.
For a complete Tmux cheatsheet, see: tmuxcheatsheet.com.
- Lock Screen:
Ctrl+Win+L
- Lock the system
Komorebi uses the Windows key as the modifier to avoid conflicts with tmux Alt shortcuts.
System Management:
- Reload whkd:
Win+O
- Restart the hotkey daemon - Reload Komorebi:
Win+Shift+O
- Reload komorebi configuration
Window Management:
- Close Window:
Win+Q
- Minimize Window:
Win+M
- Toggle Float:
Win+T
- Toggle floating mode - Toggle Monocle:
Win+Shift+F
- Full-screen current window
Window Focus:
- Navigate:
Win+H/J/K/L
- Vim-style window focus - Cycle Focus:
Win+Shift+[
/Win+Shift+]
- Cycle through windows
Window Movement:
- Move Window:
Win+Shift+H/J/K/L
- Move window in direction - Promote Window:
Win+Shift+Enter
- Move window to master position
Window Stacking:
- Stack Windows:
Win+Arrow Keys
- Stack window in direction - Unstack:
Win+;
- Remove window from stack - Cycle Stack:
Win+[
/Win+]
- Navigate stacked windows
Resizing:
- Horizontal:
Win++
/Win+-
- Increase/decrease horizontal size - Vertical:
Win+Shift++
/Win+Shift+-
- Increase/decrease vertical size
Layout Management:
- Flip Horizontal:
Win+X
- Flip layout horizontally - Flip Vertical:
Win+Y
- Flip layout vertically - Retile:
Win+Shift+R
- Force retiling of all windows - Pause/Resume:
Win+P
- Toggle window management
Workspaces:
- Switch Workspace:
Win+1-8
- Focus workspace 1-8 - Move to Workspace:
Win+Shift+1-8
- Move current window to workspace
Modern file manager with vim-like keybindings and rich features.
- When to use: File browsing, bulk operations, visual file management
- Launch:
yazi
ory
(alias) - Key features: Image previews, syntax highlighting, bulk rename
- Navigate:
h/j/k/l
- vim-style navigation - Select:
Space
- toggle selection,v
- visual mode - Actions:
d
- delete,r
- rename,c
- copy,x
- cut
Check: https://www.youtube.com/watch?v=iKb3cHDD9hw
File Operations:
eza
- Modernls
replacement with icons and git statusfd
- Fastfind
alternative with intuitive syntaxripgrep
(rg) - Ultra-fast text search toolbat
-cat
with syntax highlighting and git integration
Navigation:
zoxide
(z) - Smart directory jumping based on frequencyfzf
- Fuzzy finder for files, history, processes
Git:
lazygit
- Terminal UI for git operationsdifftastic
- Structural diff tool that understands syntax
System:
lsd
- LSDeluxe, another modernls
with iconstmux
- Terminal multiplexer for session managementuv
- Fast Python package installer and resolver
Development:
neovim
- Modern vim-based editorrust
toolchain - Systems programming languagenpm
- Node.js package manager