-#! /bin/sh
+#! /bin/bash
set -e
sub=
mkdir -p $HOME$sub
-: ${REPO=http://guvnor.distorted.org.uk/ftp/pub/mdw}
+: ${REPO=http://guvnor.distorted.org.uk/ftp/pub/mdw/profile}
export PATH=/usr/local/bin:$HOME$sub/bin:/usr/bin:/usr/ccs/bin:/bin
### Install necessary things
echo "Installing useful scripts..."
-for script in lesspipe.sh start-ssh-agent svnwrap; do
+scripts="
+ lesspipe.sh start-ssh-agent svnwrap movemail-hack"
+[ "$xstuff" ] && scripts="$scripts
+ xrun"
+for script in $scripts; do
$echon " $script:$echoc"
found=
for p in /bin /usr/bin /usr/local/bin $(echo $PATH | tr : ' '); do
done
echo " all done."
+### Install global configuration
+echo -n "Installing dotfile configuration:"
+if [ -f $HOME$sub/.mdw.conf ]; then
+ echo " already installed."
+else
+ cp mdw.conf $HOME$sub/.mdw.conf
+ echo " done."
+fi
+
### Symlink the various dotfiles into place
dotfiles="
- bash_profile bash_logout bashrc
+ bash_profile bash_logout bashrc inputrc
emacs emacs-calc
- vm mailrc
- cmucl-init.lisp clisprc.lisp sbclrc
- dircolors screenrc"
-[ "$xstuff" ] && dotfiles="$dotfiles xinitrc xsession Xdefaults"
+ vm mailrc signature
+ gitconfig
+ lisp-init.lisp:.cmucl-init.lisp
+ lisp-init.lisp:.sbclrc
+ lisp-init.lisp:.clisprc.lisp
+ lisp-init.lisp:.eclrc
+ dircolors screenrc cvsrc indent.pro"
+[ "$xstuff" ] && dotfiles="$dotfiles
+ xinitrc xsession Xdefaults vncrc vncsession
+ eterm-theme.cfg:.Eterm/themes/Eterm/theme.cfg
+ e-keybindings.cfg:.enlightenment/keybindings.cfg
+ evnc-keybindings.cfg:.enlightenment-vnc/keybindings.cfg
+ jue-peek.jpg:.enlightenment/backgrounds/jue-peek.jpg"
mkdir -p $HOME/test
echo "Installing dotfiles..."
for d in $dotfiles; do
- [ -f $d ]
- rm -f "$HOME$sub/.$d"
- ln -s $here/$d $HOME$sub/.$d
- echo " .$d"
+ target=.$d
+ case $d in
+ *:*) target=${d#*:} d=${d%%:*};;
+ esac
+ ft=$HOME$sub/$target
+ dir=${ft%/*}
+ mkdir -p $dir
+ ln -s $here/$d $ft.new
+ mv $ft.new $ft
+ echo " $target"
done
echo " all done."
### Set up the Emacs config
+$echon "Finding a suitable emacs:$echoc"
+emacs=no
+for i in emacs21 emacs; do
+ if type -p >/dev/null $i; then
+ emacs=$i
+ break
+ fi
+done
+if [ $emacs = no ]; then
+ echo " failed."
+ emacs=:
+else
+ echo " $emacs."
+fi
+
echo "Installing Emacs packages..."
-for elib in make-regexp; do
+emacspkg="
+ make-regexp
+ git vc-git
+ quilt"
+for elib in $emacspkg; do
$echon " $elib:$echoc"
- if $false emacs >/dev/null 2>&1 --batch --eval '
- (kill-emacs (condition-case nil
- (progn (load-library "make-regexp") 0)
- (error 1)))'; then
+ if $false $emacs >/dev/null 2>&1 --no-site-file --batch --eval '
+ (progn
+ (setq load-path (nconc load-path (list "~/lib/emacs")))
+ (kill-emacs (condition-case nil
+ (progn (load-library "'"$elib"'") 0)
+ (error 1))))'; then
echo " already installed."
else
$echon " downloading$echoc"
- $GETURL $HOME$sub/lib/emacs/make-regexp.el $REPO/make-regexp.el
+ $GETURL $HOME$sub/lib/emacs/$elib.el $REPO/$elib.el
$echon " compiling$echoc"
(cd $HOME$sub/lib/emacs;
- emacs >/dev/null 2>&1 --batch \
- --eval '(byte-compile-file "make-regexp.el")')
+ $emacs >/dev/null 2>&1 --no-site-file --batch \
+ --eval '(byte-compile-file "'"$elib.el"'")')
echo " done."
fi
done
for link in dot-emacs.el:dot-emacs.el emacs-Makefile:Makefile; do
set -- $(echo $link | tr : ' ')
from=$1 to=$2
- rm -f $HOME$sub/lib/emacs/$to
- ln -s $here/$from $HOME$sub/lib/emacs/$to
+ ln -s $here/$from $HOME$sub/lib/emacs/$to.new
+ mv $HOME$sub/lib/emacs/$to.new $HOME$sub/lib/emacs/$to
done
$echon " compiling$echoc"
-make >/dev/null 2>&1 -C $HOME$sub/lib/emacs
+make >/dev/null 2>&1 -C $HOME$sub/lib/emacs EMACS=$emacs
echo " done."