Hey there π
Welcome to my dotfiles! These are set up to fit my workflow across both Mac and Linux. Feel free to explore, steal bits, and make them your own.
# Clone the repository
git clone <this-repo>
cd dots
# Run the Sway installer (installs everything)
sudo ./lib/sway/sway-install.sh
# Stow your dotfiles
stow common -t ~
stow linux -t ~
# Install language versions
mise installSee lib/sway/README.md for detailed installation instructions.
# Clone the repository
git clone <this-repo>
cd dots
# Install common shell tools
bash common/install.sh
# Install packages via Homebrew
brew bundle --file=lib/macos/Brewfile
# Stow your dotfiles
stow common -t ~
stow macos -t ~
# Install language versions
mise installSee lib/macos/README.md for detailed installation instructions.
dots/
βββ common/ # Cross-platform dotfiles
β βββ .config/ # App configs (nvim, starship, mise, etc.)
β βββ .zshrc # Zsh configuration
β βββ .tmux.conf # Tmux configuration
β βββ install.sh # Common installation script
β
βββ linux/ # Linux-specific configs
β βββ sway/ # Sway window manager
β βββ hyprland/ # Hyprland (legacy)
β βββ kde/ # KDE Plasma
β
βββ macos/ # macOS-specific configs
β βββ .config/ # macOS app overrides
β
βββ lib/ # Installation scripts and assets
βββ sway/ # Sway installer and packages
βββ macos/ # macOS Brewfile
common/ - Shared configurations that work across all platforms:
- Neovim, Tmux, Git, Shell (zsh), Starship prompt
- CLI tools: bat, eza, ripgrep, fzf, etc.
- Version manager: mise (replaces asdf, pyenv, nvm)
linux/ - Linux desktop environment configurations:
- Window manager configs (Sway, Hyprland, KDE)
- Wayland-specific tools (Waybar, Rofi, SwayNC)
macos/ - macOS-specific overrides:
- Font sizes for Retina displays
- macOS-specific keybindings
lib/ - Installation tooling:
- Automated installers
- Package lists
- Validation scripts
My Linux machines run Sway and KDE. The linux/ tree keeps shared and environment-specific configs under the same roof. Any common assets are stored in common/.config, while the Sway, Hyprland, and KDE setups live in linux/sway, linux/hyprland, and linux/kde, respectively.
See linux/sway/README.md for screenshots and details.
- Zsh + Oh My Zsh - Enhanced shell with plugins (autosuggestions, syntax highlighting, fzf-tab)
- Starship - Fast, customizable prompt (replaced Powerlevel10k)
- mise - Unified version manager (replaced asdf, pyenv, nvm, etc.)
- Linux: Ghostty (primary), Alacritty
- macOS: Alacritty, WezTerm
- Linux Laptop: Sway (Wayland) - Lightweight and efficient
- Linux Desktop: KDE Plasma - Full-featured for GUI-heavy work
- macOS: AeroSpace - Tiling window manager
- NeoVim - All configs in
common/.config/nvim - Neovide - GUI wrapper for NeoVim (both platforms)
- Version Control: Git, lazygit, GitHub CLI
- Containers: Docker, k9s, lazydocker, kubectl, helm
- Languages: Node.js, Python, Ruby, Go, Rust, PHP, Julia, Deno (managed via mise)
- Infrastructure: Terraform, Kubernetes tooling
Replacing traditional Unix tools with modern alternatives:
| Traditional | Modern Alternative | Purpose |
|---|---|---|
cat |
bat |
Syntax highlighting |
ls |
eza |
Icons and colors |
find |
fd |
Faster, simpler syntax |
grep |
ripgrep |
Blazing fast search |
cd |
zoxide |
Frecency-based navigation |
diff |
delta |
Better git diffs |
- Linux GUI: Nemo
- CLI (both): yazi (terminal file manager)
- btop - Resource monitor
- fastfetch - System info
Detailed documentation for each component:
- Common Installation - Shell, prompt, version manager setup
- Linux/Sway Setup - Complete Sway desktop installation
- macOS Setup - Homebrew package management
- NeoVim Config - Editor configuration
- Sway Configs - Window manager showcase
Cross-platform script that installs:
- oh-my-zsh and plugins (autosuggestions, syntax highlighting, fzf-tab)
- Starship prompt
- mise version manager
- Tmux Plugin Manager (TPM)
- bat cache rebuild
Complete Sway desktop installation for Arch/EndeavourOS:
- Calls
common/install.shfirst - Installs 200+ packages
- Sets up system services
- Creates required directories
- Enables greetd, NetworkManager, Bluetooth, Docker
Homebrew package manifest:
- Development tools
- CLI utilities
- GUI applications
- VS Code extensions
- Maintains parity with Linux package list
This is a personal dotfiles repository, but feel free to:
- Open issues for questions
- Suggest improvements
- Fork and adapt for your own use
Some app configs (like Ghostty and Kitty) are split between common/ and the OS-specific folder, using imports in the OS's config file. This allows tweaking platform-specific settings (like font sizes for Retina displays) without duplicating everything.
Recently migrated from asdf to mise:
- mise is faster and more compatible
- Reads legacy
.tool-versionsfiles - Supports
.node-version,.python-version, etc. - Configuration:
~/.config/mise/config.toml
Recently migrated from Powerlevel10k to Starship:
- Written in Rust (much faster)
- Cross-platform consistency
- Easier to configure
- Configuration:
~/.config/starship.toml

