Personal dotfiles for Linux (primarily Arch) and macOS.
Includes configuration for Zsh, Neovim, Git, tmux, KDE/GTK theming, OpenRGB, REAPER, and related tooling.
Hyprland installs also include a basic Hyprlock setup, with SUPER+L bound to lock the screen.
git clone https://github.com/zkm/dotfiles ~/.dotfiles
cd ~/.dotfiles
./setup.shsetup.sh is intentionally destructive for managed dotfiles.
Before creating fresh symlinks, it removes existing files/dirs such as:
~/.aliases~/.gitconfig~/.dircolors~/.vimrc~/.vimrc.plugs~/.zshrc~/.zsh~/.tmux.conf~/.p10k.zsh~/.zprofile~/.bin
Back up anything important first.
setup.sh currently performs the following:
- Ensures zsh is your shell (if currently using bash).
- Installs core packages:
- macOS: Homebrew + packages
- Linux:
pacman,dnf,apt, oryum
- Bootstraps Neovim compatibility (
~/.config/nvim/init.vimsourcing~/.vimrc) only when~/.config/nvim/init.luais not present. - Creates directories used by aliases (
~/Documents/work,~/Developer, OpenRGB dirs). - Symlinks repo-managed dotfiles into
$HOME. - Adds
pyenv,rbenv, andnvminit lines to~/.zshrc(if missing). - Installs Powerlevel10k, vim-plug plugins, and
copilot.vim. - Installs fonts (MesloLGS Nerd Font + Fira Code Nerd Font, with local file fallback).
- Applies Terminal.app default profile on macOS (
Pro). - Attempts browser install (Firefox + Chrome/Chromium).
- Attempts Visual Studio Code install.
- Arch Linux: bootstraps
yayif needed and installsvisual-studio-code-binfrom AUR.
- Installs Docker:
- macOS: installs Docker Desktop (Homebrew cask)
- Linux: installs Docker engine + compose plugin/package, enables the service, and adds your user to the
dockergroup
- Optionally installs OpenRGB/REAPER (opt-in flags).
- macOS: Docker Desktop is installed if missing. Launch Docker Desktop once after setup to initialize the daemon.
- Linux: setup attempts to enable/start Docker via
systemctland adds your user to thedockergroup. - Linux group changes usually require logging out and back in before running Docker without
sudo.
Quick checks:
docker --version
docker info
docker compose versionIf docker info fails on macOS:
- Open Docker Desktop and wait until it shows as running.
If Linux says permission denied on /var/run/docker.sock:
sudo usermod -aG docker "$USER"
newgrp docker
docker infoIf the daemon is not running on Linux:
sudo systemctl enable --now docker
sudo systemctl status dockerThese are now opt-in per user/machine.
If you run ./setup.sh interactively (normal terminal), setup will prompt:
- Install OpenRGB? [y/N]
- Install REAPER? [y/N]
If you run setup non-interactively (automation/CI), use env flags.
Install both:
INSTALL_MEDIA_TOOLS=1 ./setup.shInstall only one:
INSTALL_OPENRGB=1 ./setup.sh
INSTALL_REAPER=1 ./setup.shNotes:
- macOS: tries Homebrew casks (
openrgb,reaper). - Arch: installs
openrgbvia pacman; triesreaperviayay(AUR). - apt/dnf/yum systems: attempts
openrgb; REAPER is usually manual.
- KDE/GTK configs are primarily Linux-targeted.
- Package install paths are tuned mostly for Arch first, with
dnf/apt/yumfallbacks. - Tested environments: Arch Linux + KDE Plasma, Fedora Linux Asahi Remix 43 (Workstation Edition, GNOME 49.5, Mutter/Wayland, aarch64).
- Uses Homebrew for package/app installation.
- Installs fonts into
~/Library/Fonts. - Sets Apple Terminal default/startup profile to
Pro. - Linux desktop theming files are present in-repo but mostly not applied by macOS tooling.
Run:
./uninstall.shThis removes symlinks that point to this repo, cleans setup-added shell init lines, and removes optional components installed by setup (Powerlevel10k clone, Neovim copilot plugin, nvm directory, and installed font copies).
Create a timestamped snapshot of all current files:
./local/bin/backup_current_files.sh [source_dir] [backup_dir]Examples:
# Snapshot current directory into ./backups/<timestamp>
./local/bin/backup_current_files.sh
# Snapshot ~/.config into ~/Backups/config-snapshots/<timestamp>
./local/bin/backup_current_files.sh ~/.config ~/Backups/config-snapshotsNotes:
- Each run creates a new snapshot directory named like
20260322_101530. - Directory structure is preserved inside each snapshot.
- If the backup directory is inside the source directory, it is automatically excluded.
- Arch Linux + KDE Plasma
- Fedora Linux Asahi Remix 43 (Workstation Edition, GNOME 49.5, Mutter/Wayland, aarch64)
- macOS (Homebrew-based path)
The repo ignores generated/runtime artifacts, including:
- OpenRGB logs/cache/venv and backup JSON files
- REAPER license/registration artifacts
- Runtime logs and editor temp files
This keeps syncs focused on reusable configuration.