--- /dev/null
+#!/bin/sh
+#
+# mrsetup - set up an account using mr
+#
+# Copyright © 2008 martin f. krafft <madduck@madduck.net>
+# Released under the terms of the Artistic Licence 2.0
+#
+set -eu
+
+MY_GIT_SERVER=git.madduck.net
+MY_GIT_REPOS='~/git'
+MY_ACCOUNT_GIT_REPO=$MY_GIT_REPOS/accounts/$(whoami)@$(hostname --fqdn).git
+MY_GIT_URL_BASE=ssh://$MY_GIT_SERVER
+MY_MR_REPO_URL=$MY_GIT_URL_BASE/$MY_GIT_REPOS/pub/etc/mr.git
+MY_ACCOUNT_REPO_URL=$MY_GIT_URL_BASE/$MY_ACCOUNT_GIT_REPO
+MR_REPO_URL=git://git.kitenet.net/mr
+MR_CODE=code/mr
+MR_FGIT=.fgits/mr.git
+MR=.mr
+BIN_DIR=.bin
+
+if [ ! -x "$(command -v git)" ]; then
+  echo E: git is not installed. >&2
+  exit 1
+fi
+
+if [ -e .mrconfig ]; then
+  echo E: .mrconfig already exists. >&2
+  exit 2
+fi
+
+if [ -d "$MR_FGIT" ]; then
+  echo E: "$MR_FGIT" already exists. >&2
+  exit 3
+fi
+
+if [ -d ".git" ]; then
+  echo E: .git already exists. >&2
+  exit 3
+fi
+
+if [ -d code/mr ]; then
+  if [ -x code/mr/mr ]; then
+    echo W: code/mr already exists, let us hope for the best... >&2
+  else
+    echo E: code/mr already exists. >&2
+    exit 4
+  fi
+else
+  echo I: cloning mr into ${MR_CODE}...
+  mkdir --parent ${MR_CODE%/*}
+  git clone $MR_REPO_URL $MR_CODE
+  mkdir .bin
+  ln -s ../${MR_CODE}/mr $BIN_DIR/mr
+  echo
+fi
+
+cat <<_eof > .mrconfig
+[DEFAULT]
+include = cat $MR_CODE/lib/*
+
+[$MR_FGIT]
+checkout = git_fake_bare_checkout $MY_MR_REPO_URL ${MR_FGIT##*/} ../../
+_eof
+echo I: initial .mrconfig:
+cat .mrconfig
+echo
+
+echo I: cloning mr configuration...
+$MR_CODE/mr co
+echo
+
+echo I: bootstrapping default .mrconfig...
+cp $MR/templ/.mrconfig .
+
+echo I: setting up base...
+$MR_CODE/mr co
+
+if ssh $MY_GIT_SERVER "test -d $MY_ACCOUNT_GIT_REPO"; then
+  echo I: checking out local git repository...
+  dir="$(mktemp -d home.XXXXXXXX)"
+  trap "rm -rf $dir" 0
+  git clone --no-checkout $MY_ACCOUNT_REPO_URL "$dir"/co
+  mv "$dir"/co/.git .
+  git checkout-index --quiet --index --all
+  git reset HEAD
+  echo
+else
+  echo I: creating remote git repository for this account...
+  ssh $MY_GIT_SERVER "GIT_DIR=${MY_ACCOUNT_GIT_REPO} git --bare init"
+  echo I: setting up local git repository...
+  git init
+  git remote add origin $MY_ACCOUNT_REPO_URL
+  git config branch.master.remote origin
+  git config branch.master.merge refs/heads/master
+  git add .mrconfig
+  git commit -m'initial checkin'
+  git push --all
+fi
+
+exit 0