Arch Linux, Xmonad, Zsh, and friends - my configuration
Emacs Lisp Python Vim script Shell Haskell CSS
Switch branches/tags
Nothing to show


I've reorganized all my configs to be managed by rcm. The new consolidated repo is located at:


Previously, I kept my whole configuration in this repo, however, it wasn't scalable, as I couldn't for example easily use my Vim or shell configuration in Arch and on a Mac. I've decided to split the configuration into multiple repos to make it more reusable. In particular, have a look at the following repos:


This repository contains my configuration of Arch Linux with Xmonad, Zsh, Vim, and other tools. In addition to the configuration files themselves, the repository includes scripts for installing software, which I use in my day-to-day work, and for symlinking the configuration files to the right locations. The scripts can be used to completely configure a clean installation of Arch Linux. In summary, the following software and tools are installed and configured:

  • Xmonad: a tiling window manager
  • Zsh + oh-my-zsh: a Shell
  • Yaourt: a package installer, which handles both the core repositories and AUR
  • Vim: a text editor, which I mainly use these days
  • Emacs: a text editor, which I used for 1.5 years before switching to Vim
  • Git: a version control system
  • Freetype2 infinality + a set of fonts (e.g., Terminus): font configuration
  • Tex, Python libs, and may other useful applications

Initial steps

The scripts included in this repo assume that you have Arch Linux installed, which can be done by following the installation procedure described in the Arch wiki:

Once you have Arch Linux installed, you need to follow the following basic steps as root to be able to use the scripts from this repo:

  1. By default, the dhcp daemon is disabled, you need to turn it on:
systemctl enable dhcpcd
systemctl start dhcpcd
  1. Next, it's a good idea to rank the repo mirrors to use the fastest available:
cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist-backup
rankmirrors -n 6 /etc/pacman.d/mirrorlist-backup > /etc/pacman.d/mirrorlist
  1. Update the system, and install sudo, openssh, and git:
pacman -Syu
pacman -S sudo openssh git
  1. Modify the sudo configuration to allow users from the wheel group to use sudo:
# Uncomment the following line, and save the file with :wq
# %wheel ALL=(ALL) ALL
  1. Create a user <username>, add the user to wheel, and set the password:
useradd -m <username>
usermod -G wheel -a <username>
passwd <username>
  1. Added a Haskell repository as described here (it will be used to install Xmonad):

Now, you are ready to clone the current repository and start running the configuration scripts. This needs to be done under <username>. The following commands switch to the <username> user, create a repos directory, and clone this repository there:

su - <username>
mkdir repos
cd repos
git clone git://
cd arch-xmonad-zsh

Installation scripts

Everything is now ready to start running the installation scripts in the order of their numbers:

  1. ./ initialize Git submodules, which include Emacs modes and Vim plugins.
  2. ./ install Yaourt.
  3. ./ install Zsh and make it the default Shell.
  4. ./ install Xmonad, its dependencies, and the following related useful apps:
    • rxvt-unicode: a highly customizable terminal
    • dmenu: a great customizable tool for running applications and other tasks
    • xxkb: remember window-specific keyboard layouts
    • slock: an awesome screen locker
  5. ./ install a number of useful and essential applications:
    • gvim: the text editor, comes with extra functionality compared with the default Vim
    • emacs: the text editor editor :)
    • chromium: an open source version of Google Chrome
    • ranger: an amazing file manager
    • ack: a tool for searching in files
    • fasd: an indispensable directory and file jumping program
    • htop: system and resource utilization information at a glance
    • colordiff: add some colors to your diffs
    • feh: a very fast image viewer
    • ncdu: a tool for finding things that consume disk space and deleting them
    • mpd + ncmpcpp: a great audio player and curses front-end to it
    • pydf: disk usage in color
    • dzen2: a tool for displaying information in an overlay
    • zathura: an awesome PDF viewer with Vim-like key bindings
    • dtrx: an intelligent archive extractor
    • and other useful tools
  6. ./ create symlinks to all the configs, clone .oh-my-zsh for both <username> and root.
  7. ./ install freetype2-infinality and a set of fonts:
    • Terminus
    • DejaVu
    • TeX Gyre
    • Mac fonts
    • MS fonts
  8. ./ you need an office in this life, let it be LibreOffice.
  9. ./ Latex tools: texlive, auctex, texmaker.
  10. ./ Python tools and libs:
    • pip2: a Python package manager
    • ipython2: a powerful Python Shell
    • bpython2: another Python Shell with fancy auto-completion
    • and other tools: ropemacs, pyflakes, pep8
  11. ./ a great Haskell library and tool for converting various text file format.

Once the steps are completed, reboot, login, type startx, and enjoy! :)

Key-bindings and aliases

This section is still to be written :) Meanwhile, have a look at ~/.xmonad/xmonad.hs, ~/.zshrc, ~/.gitconfig, and ~/.vimrc.


The source code is released under the Apache 2.0 license.

Copyright (C) 2013 Anton Beloglazov