command: setupcon
 
   # Miscellaneous.
-  - name: Ensure dotfile symlinks
+  - name: Ensure minimal dotfile symlinks
     file: state=link force=yes src={{item}} dest=~/.{{item|basename}}
-    with_fileglob: ~/config/ansible/files/dotfiles/*
+    with_fileglob: ~/config/ansible/files/dotfiles/minimal/*
+  - name: Ensure root user dotfile symlinks
+    file: state=link force=yes src={{item}} dest=~/.{{item|basename}}
+    with_fileglob: ~/config/ansible/files/dotfiles/root/*
   - name: ensure ~/.vimbackups directory
     file: state=directory dest=~/.vimbackups
   - name: ensure man-db, manpages is installed
     - manpages
   - name: set /etc/localtime
     file: state=link force=yes src=/usr/share/zoneinfo/Europe/Berlin dest=/etc/localtime
-  - name: ensure git, vim, less are installed
+  - name: ensure sudo, git, vim, less are installed
     apt: name={{item}} state=present
     with_items:
     - git
     - vim
     - less
-  - name: create user plom
-    user: name=plom
+    - sudo
   - name: ensure boot messages are not cleared on start up
     replace: dest=/etc/systemd/system/getty.target.wants/getty@tty1.service regexp='^TTYVTDisallocate=yes.*$' replace='TTYVDisallocate=no'
+
+  # Config user.
+  - name: create user plom
+    user: name=plom
+  - name: have config repo in user directory
+    git: repo=git://github.com/plomlompom/config dest=/home/plom/config
+    become_user: plom
+    become_method: su
+  - name: ensure user has sudo privileges
+    command: adduser plom sudo
 
+++ /dev/null
-# Bash as a non-login shell in non-POSIX-mode does not read in the startup
-# script at the path in $ENV. This forces it to still read in the ~/.shinit
-# startup script for non-login shells.
-
-. ~/.shinit
 
+++ /dev/null
-[user]
-       name = Christian Heller
-       email = c.heller@plomlompom.de
 
--- /dev/null
+# Bash as a non-login shell in non-POSIX-mode does not read in the startup
+# script at the path in $ENV. This forces it to still read in the ~/.shinit
+# startup script for non-login shells.
+
+. ~/.shinit
 
--- /dev/null
+[user]
+       name = Christian Heller
+       email = c.heller@plomlompom.de
 
--- /dev/null
+# Initialization for login shells.
+
+# Tell interactive shells to look in ~/.shinit for setup.
+ENV=$HOME/.shinit
+export ENV
+. $ENV
 
--- /dev/null
+# Settings for interactive shells.
+
+# Ensure shell truly is interactive to avoid confusing non-interactive shells.
+if [[ $- == *i* ]]; then
+
+    # Fancy colors for ls.
+    alias ls="ls --color=auto"
+
+    # Use vim as default editor for anything.
+    export VISUAL=vim
+    export EDITOR=$VISUAL
+
+    # Colored prompt with username, hostname, date/time, directory.
+    colornumber=7 # Default to white if no color set via colornumber dotfile.
+    colornumber_file=~/.shinit_color
+    if [ -f $colornumber_file ]; then
+        colornumber=`cat $colornumber_file`
+    fi
+    tput_color="$(tput setaf $colornumber)$(tput bold)"
+    tput_reset="$(tput sgr0)"
+    # Bash confuses the line length when not told to not count escape sequences.
+    if [ ! "$BASH" = "" ]; then
+        tput_color="\[$tput_color\]"
+        tput_reset="\[$tput_reset\]"
+    fi
+    PS1="${tput_color}["\$\(date\ +%Y-%m-%d/%H:%M:%S/%Z\)" $USER@$(hostname):"\$\(pwd\)"]$ $tput_reset"
+    PS2="${tput_color}> $tput_reset"
+    PS3="${tput_color}select: $tput_reset"
+    PS4="${tput_color}+ $tput_reset"
+
+    # Add local additions.
+    local_shinit_file=~/.shinit_add
+    if [ -f $local_shinit_file ]; then
+        . $local_shinit_file
+    fi
+
+fi
 
--- /dev/null
+" Activate syntax highlighting.
+syntax on
+filetype plugin on
+
+" Number lines.
+set number
+
+" Don't add unsolicited final newline.
+set binary
+
+" Indentation rules (tabs to 4 spaces).
+set expandtab
+set shiftwidth=2
+set softtabstop=2
+
+" Backups.
+set backup
+set backupdir=~/.vimbackups
+let myvar = strftime("%Y-%m-%d_%H-%M-%S")
+let myvar = "set backupext=_". myvar
+execute myvar
+
+" Keep syntax highlighting healthy.
+autocmd BufEnter * :syntax sync fromstart
+
+" Mark the 80-th column.
+set colorcolumn=80
+
+" Source additions
+source ~/.vimrc_add
 
+++ /dev/null
-# Initialization for login shells.
-
-# Tell interactive shells to look in ~/.shinit for setup.
-ENV=$HOME/.shinit
-export ENV
-. $ENV
 
+++ /dev/null
-# Settings for interactive shells.
-
-# Ensure shell truly is interactive to avoid confusing non-interactive shells.
-if [[ $- == *i* ]]; then
-
-    # Fancy colors for ls.
-    alias ls="ls --color=auto"
-
-    # Use vim as default editor for anything.
-    export VISUAL=vim
-    export EDITOR=$VISUAL
-
-    # Colored prompt with username, hostname, date/time, directory.
-    colornumber=7 # Default to white if no color set via colornumber dotfile.
-    colornumber_file=~/.shinit_color
-    if [ -f $colornumber_file ]; then
-        colornumber=`cat $colornumber_file`
-    fi
-    tput_color="$(tput setaf $colornumber)$(tput bold)"
-    tput_reset="$(tput sgr0)"
-    # Bash confuses the line length when not told to not count escape sequences.
-    if [ ! "$BASH" = "" ]; then
-        tput_color="\[$tput_color\]"
-        tput_reset="\[$tput_reset\]"
-    fi
-    PS1="${tput_color}["\$\(date\ +%Y-%m-%d/%H:%M:%S/%Z\)" $USER@$(hostname):"\$\(pwd\)"]$ $tput_reset"
-    PS2="${tput_color}> $tput_reset"
-    PS3="${tput_color}select: $tput_reset"
-    PS4="${tput_color}+ $tput_reset"
-
-    # Add local additions.
-    local_shinit_file=~/.shinit_add
-    if [ -f $local_shinit_file ]; then
-        . $local_shinit_file
-    fi
-
-fi
 
+++ /dev/null
-" Activate syntax highlighting.
-syntax on
-filetype plugin on
-
-" Number lines.
-set number
-
-" Don't add unsolicited final newline.
-set binary
-
-" Indentation rules (tabs to 4 spaces).
-set expandtab
-set shiftwidth=2
-set softtabstop=2
-
-" Backups.
-set backup
-set backupdir=~/.vimbackups
-let myvar = strftime("%Y-%m-%d_%H-%M-%S")
-let myvar = "set backupext=_". myvar
-execute myvar
-
-" Keep syntax highlighting healthy.
-autocmd BufEnter * :syntax sync fromstart
-
-" Mark the 80-th column.
-set colorcolumn=80
-
-" Source additions
-source ~/.vimrc_add
 
--- /dev/null
+ansible-playbook -i 'localhost,' -c local user.yml
 
--- /dev/null
+- hosts: all
+  tasks:
+
+  - name: ensure ~/.vimbackups directory
+    file: state=directory dest=~/.vimbackups
+  - name: Ensure dotfile symlinks
+    file: state=link force=yes src={{item}} dest=~/.{{item|basename}}
+    with_fileglob: ~/config/ansible/files/dotfiles/minimal/*
+  - name: Ensure user dotfile symlinks
+    file: state=link force=yes src={{item}} dest=~/.{{item|basename}}
+    with_fileglob: ~/config/ansible/files/dotfiles/user/*