Personal dotfiles for system configuration management using GNU Stow.
Simple, focused dotfiles repository following UNIX principles:
- One responsibility: Link configuration files
- No package installation: Install tools yourself
- GNU Stow: Clean symlink management
- Version controlled: Track all config changes
Install these tools before running the install script:
- GNU Stow - For linking dotfiles
- macOS:
brew install stow - Ubuntu:
sudo apt install stow - Arch:
sudo pacman -S stow
- macOS:
The configurations in this repo are designed for:
- git - Version control
- zsh with Oh-My-Zsh - Enhanced shell
- tmux - Terminal multiplexer
- neovim - Modern text editor
- ghostty - Terminal emulator
Install these separately using your system's package manager.
# Clone the repository
git clone https://github.com/kristofferrisa/dotfiles.git ~/dotfiles
# Link dotfiles
cd ~/dotfiles
./install.shThe install script:
- Checks if GNU Stow is installed
- Checks for conflicts with existing files
- Creates symlinks from
.config/*to~/.config/
That's it. No package installation, no setup wizards, just linking configs.
Checking for conflicts...
Linking dotfiles...
Done. Dotfiles linked to ~/.config/
If conflicts are detected, backup your existing ~/.config/ files first.
.config/
├── ghostty/ # Ghostty terminal emulator config
├── nvim/ # Neovim configuration
├── opencode/ # OpenCode agent configurations
├── tmux/ # Tmux configuration and keybindings
└── zsh/ # Zsh shell with Oh-My-Zsh
Key aliases from .config/zsh/.zshrc:
n # Open neovim in current directory
gaa # git add --all
gcm # git commit -m
gpsh # git push
gss # git status -s- Prefix:
Ctrl+a(instead of default Ctrl+b) - Split vertical:
Ctrl+a | - Split horizontal:
Ctrl+a - - Navigate panes:
Ctrl+a h/j/k/l - Resize panes:
Ctrl+a H/J/K/L(hold Ctrl) - Copy mode:
Ctrl+a [(vim keybindings)
This repo includes nvim configuration. To use it:
- Install neovim:
brew install neovim(macOS) or your package manager - Link configs:
./install.sh - Launch nvim: plugins will install on first launch
dotfiles/
├── install.sh # Link dotfiles using Stow (37 lines)
├── .config/ # Application configurations
│ ├── ghostty/ # Terminal emulator
│ ├── nvim/ # Neovim editor
│ ├── opencode/ # OpenCode agents
│ ├── tmux/ # Terminal multiplexer
│ ├── yabai/ # Window manager (macOS)
│ └── zsh/ # Shell configuration
├── README.md # This file
cd ~/dotfiles
git pull
./install.sh # Re-link configsGNU Stow will update symlinks automatically.
Since configs are symlinked, you can edit them in place:
# Edit config in either location
nvim ~/.config/zsh/.zshrc
# OR
nvim ~/dotfiles/.config/zsh/.zshrc
# Both point to the same file!
# Commit changes
cd ~/dotfiles
git add .config/zsh/.zshrc
git commit -m "Update zsh config"
git push# macOS
brew install stow
# Ubuntu/Debian
sudo apt install stow
# Arch
sudo pacman -S stowBackup existing configs:
mv ~/.config ~/.config.backup
./install.shOr manually resolve conflicts:
# Remove specific conflicting file
rm ~/.config/zsh/.zshrc
./install.shcd ~/dotfiles
stow -D -t ~/.config .config/- Do one thing well: Link dotfiles, nothing more
- Minimal complexity: 37 lines of shell script
- No hidden magic: Clear, readable code
- Fail fast: Exit on errors with helpful messages
- Composable: Works with your existing tools
This is a personal dotfiles repository, but feel free to:
- Fork for your own use
- Open issues for bugs
- Suggest improvements via PRs
MIT License - Use as you wish.