A curated set of my personal configuration files (dotfiles) for Arch-based systems, designed to be managed with GNU Stow. This setup currently targets an Omarchy-based environment, but most pieces work on any Arch install.
- Quickstart
- Omarchy customization
- Packages required
- Apply dotfiles with GNU Stow
- Other tools and setups
- Optional: clear Neovim plugins
- License
- Code of conduct
Prerequisites:
- Arch-based distro (or Omarchy)
gitandstowinstalledyayavailable if you want to install AUR packages
sudo pacman -S --needed git stowClone and enter this repository:
git clone https://github.com/callmarx/dotfiles.git ~/dotfiles
cd ~/dotfilesI use Omarchy to bootstrap the machine. See the official docs for getting started:
Common customizations I do:
- Remove apps/packages I don't use
# Example: remove gnome-keyring
omarchy-pkg-remove
# or directly via yay:
yay -Rs gnome-keyring
# Example: remove bundled web apps (twitter, youtube, etc.)
omarchy-webapp-remove- Install a couple of extra packages
# via Omarchy helper
omarchy-pkg-install
# or directly via yay:
yay -S google-chrome # `rocm-smi-lib` for AMD GPU required by `btop`## Bash customization and local bin (via mise):
sudo pacman -S usage # mise and starship packages is installed by omarchyStow manages symlinks from this repo into your $HOME. I typically back up existing configs first.
cd ~/dotfiles
# Backup any existing configs (optional but recommended)
mv ~/.config/alacritty ~/.config/alacritty.bkp 2>/dev/null
mv ~/.bashrc ~/.bashrc.bkp 2>/dev/null
mv ~/.bash_profile ~/.bash_profile.bkp 2>/dev/null
mv ~/.config/starship.toml ~/.config/starship.toml.bkp 2>/dev/null
mv ~/.gitconfig ~/.gitconfig.bkp 2>/dev/null
mv ~/.config/hypr ~/.config/hypr.bkp 2>/dev/null
mv ~/.config/nvim ~/.config/nvim.bkp 2>/dev/null
mv ~/.config/mise ~/.config/mise.bkp 2>/dev/null
mv ~/.config/mpv ~/.config/mpv.bkp 2>/dev/null
mv ~/.claude ~/.claude.bkp 2>/dev/null
# Stow the modules you want
stow alacritty
stow bash
stow claude-code
stow git
stow hypr
stow lazyvim
stow mise
stow mpv
stow steam
stow tmuxIf you want to remove symlinks created by Stow (without deleting your files), use -D:
# From the repo root
cd ~/dotfiles
stow -D lazyvim
stow -D hypr
# ...and so on for any module you want to detach-
Alacritty: setup is under
alacritty/.config/alacritty/. Customizes font (JetBrainsMono Nerd Font), padding, keybindings, and imports the current Omarchy theme. -
Bash (customized with Starship): setup is under
bash/. I usebashwith starship. Note: As noted above in Packages required by my dotfiles, ensurestarshipis installed. -
Claude Code: setup is under
claude-code/.claude/. Global Claude Code config — includesCLAUDE.md(instructions), custom skills (skills/), and persistent memory (memory/). Stow it to place at~/.claude/. -
Git: setup is under
git/. General configuration:
- enables colored output,
- sets
developas the default branch, - wires a commit message template inspired by Conventional Commits.
-
Hyprland: setup is under
hypr/.config/hypr/. -
Neovim (LazyVim): setup is under
lazyvim/. After stowing:
# Optional: clear all local Neovim plugins/data before first run
rm -rf ~/.local/share/nvim
rm -rf ~/.local/state/nvim
# After setup mise (described below):
gem install neovim # for ruby support in Neovim
yay -S tree-sitter-cli-git # official tree-sitter-cli package is often outdated- mise (tool version manager): setup is under
mise/.config/mise/. This setup uses mise for managing tool versions.
- Global tools and versions are defined in ~/dotfiles/mise/.config/mise/config.toml.
- As noted above in Packages required by my dotfiles, ensure
miseandusageare installed.
# Install the declared tools
mise install-
mpv: setup is under
mpv/.config/mpv/. -
Steam: setup is under
steam/. Custom.desktopfiles for Steam and games, placed in~/.local/share/applications/. -
tmux: setup is under
tmux/. Install tmux and TPM, then stow:
sudo pacman -S tmux
mkdir -p ~/.config/tmux/plugins
# Plugin manager
git clone https://github.com/tmux-plugins/tpm ~/.config/tmux/plugins/tpm
# Stow the tmux config
cd ~/dotfiles
stow tmuxNOTE: Inside tmux, install plugins (tmux-resurrect, tmux-continuum, etc.) with prefix + I (with my prefix will be CTRL+\ + I or CTRL+b + I)
I'm using Lazygit and lazydocker for quick terminal-based git and docker management. These tools are installed by default with Omarchy, but if you need to install them manually:
sudo pacman -S lazygit lazydockerNote: if you keep a personal Lazygit config, symlink it into ~/.config/lazygit/config.yml. I personally use the default configuration.
This is my personal workaround to type "ç" on an English (US, international with dead keys) keyboard layout. Please apply with caution and be aware that system files may be overwritten by updates.
- Set your system keyboard layout to: English (US, international with dead keys).
For Hyprland, edit ~/.config/hypr/hyprland.conf or ~/.config/hypr/input.conf:
# Example for Brazilian and US keyboard layouts
input {
kb_layout = br, us
kb_variant = abnt2,intl
kb_options = compose:caps,grp:alt_space_toggle
}
- Edit the GTK immodules caches (paths vary by distro/versions):
sudo vim /usr/lib/gtk-3.0/3.0.0/immodules.cache
sudo vim /usr/lib/gtk-2.0/2.10.0/immodules.cacheChange the line:
"cedilla" "Cedilla" "gtk20" "/usr/share/locale" "az:ca:co:fr:gv:oc:pt:sq:tr:wa"
To:
"cedilla" "Cedilla" "gtk20" "/usr/share/locale" "az:ca:co:fr:gv:oc:pt:sq:tr:wa:en"
- Replace "ć" with "ç" and "Ć" with "Ç" in
/usr/share/X11/locale/en_US.UTF-8/Compose:
sudo cp /usr/share/X11/locale/en_US.UTF-8/Compose /usr/share/X11/locale/en_US.UTF-8/Compose.bak
sed 's/ć/ç/g' < /usr/share/X11/locale/en_US.UTF-8/Compose | sed 's/Ć/Ç/g' > Compose
sudo mv Compose /usr/share/X11/locale/en_US.UTF-8/Compose- Reboot the computer.
If you want a clean Neovim start:
rm -rf ~/.local/share/nvim
rm -rf ~/.local/state/nvimThis project is available as open source under the MIT license. See LICENSE.
I am committed to providing a friendly, safe, and welcoming environment for all. Please read and respect the Code of Conduct.