dot/rcrc: Configuration for the Plan 9 shell.
[profile] / setup
CommitLineData
65ff0e8c 1#! /bin/bash
f617db13
MW
2
3set -e
4
ce178f96
MW
5###--------------------------------------------------------------------------
6### Basic setup.
7
f617db13
MW
8umask 002
9
4aa875e9 10sub=
f617db13
MW
11mkdir -p $HOME$sub
12
8ba15f37 13: ${REPO=http://ftp.distorted.org.uk/ftp/pub/mdw/profile}
f617db13
MW
14
15export PATH=/usr/local/bin:$HOME$sub/bin:/usr/bin:/usr/ccs/bin:/bin
16
ce178f96
MW
17###--------------------------------------------------------------------------
18### Sort out command line.
19
f617db13
MW
20xstuff= false=
21while [ $# -gt 0 ]; do
22 case "$1" in
23 -x) xstuff=t;;
24 -n) false=false;;
25 --) shift; break;;
26 -*) echo >&2 "$0: bad option"; exit 1;;
27 *) break;;
28 esac
29 shift
30done
31
ce178f96
MW
32###--------------------------------------------------------------------------
33### Environment autoconfiguration.
34
35## Find out where I am
f617db13 36here=$(pwd)
f617db13 37
ce178f96 38## Suss out how to print things
f617db13
MW
39out=$(echo -n "foo"; echo "bar")
40if [ "$out" = "foobar" ]; then
41 echon="echo -n"
42 echoc=""
43else
44 echon="echo"
45 echoc='\c'
46fi
47
ce178f96 48## Find out how to fetch things over the net
f617db13
MW
49$echon "Finding URL fetcher:$echoc"
50if curl >/dev/null 2>&1 --version || [ $? -eq 2 ]; then
51 GETURL="curl -fs -o"
52 echo " curl."
53elif wget >/dev/null 2>&1 --version; then
54 GETURL="wget -q -O"
55 echo " wget."
56else
57 echo " failed!"
58 echo >&2 "$0: failed to find URL fetcher"
59 exit 1
60fi
61
ce178f96
MW
62###--------------------------------------------------------------------------
63### Create the necessary directories.
64
65echo "Creating directories..."
66for i in bin lib/emacs src; do
67 $echon " $i:$echoc"
68 if [ -d $HOME$sub/$i ]; then
69 echo " already exists."
70 else
71 mkdir -p $HOME$sub/$i
72 echo " done."
73 fi
74done
75echo " all done."
76
77###--------------------------------------------------------------------------
ce178f96
MW
78### Install some more complicated programs.
79
f617db13
MW
80echo "Installing packages..."
81systems="
285a1386
MW
82 mlib:crc-mktab
83 checkpath:tmpdir
f617db13
MW
84"
85[ "$xstuff" ] && systems="$systems
285a1386 86 xtoys:xatom
f617db13
MW
87"
88for system in $systems; do
89 set -- $(echo $system | tr : ' ')
285a1386 90 sys=$1 prog=$2
f617db13
MW
91 $echon " $sys:$echoc"
92 if $false $prog >/dev/null 2>&1 --version; then
93 echo " already installed."
94 else
95 ( set -e
96 $echon " downloading$echoc"
97 cd $HOME$sub/src
285a1386
MW
98 rm -rf $sys.tar.gz $sys-$ver
99 $GETURL $sys.tar.gz $REPO/$sys.tar.gz
f617db13 100 $echon " unpacking$echoc"
285a1386
MW
101 dir=$(gzip -cd $sys.tar.gz | tar tf - | head -1)
102 gzip -cd $sys.tar.gz | tar xf -
f617db13 103 $echon " configuring$echoc"
285a1386 104 cd $dir
f617db13
MW
105 mkdir build
106 cd build
107 ../configure --prefix=$HOME$sub >>buildlog 2>&1
108 $echon " building$echoc"
109 make >>buildlog 2>&1
110 $echon " installing$echoc"
111 make install >>buildlog 2>&1
112 echo " done."
113 )
114 fi
115done
852cd5fb 116echo " all done."
f617db13 117
ce178f96
MW
118###--------------------------------------------------------------------------
119### Install global configuration.
120
f141fe0f
MW
121echo -n "Installing dotfile configuration:"
122if [ -f $HOME$sub/.mdw.conf ]; then
123 echo " already installed."
124else
125 cp mdw.conf $HOME$sub/.mdw.conf
126 echo " done."
127fi
128
ce178f96 129## Symlink the various dotfiles into place
852cd5fb 130dotfiles="
be7dba95 131 bash_profile bash_logout bashrc inputrc bash_completion
a3bdb4d9 132 emacs emacs-calc vm gnus.el
b0d8acbe 133 vimrc mg zile
b3468c3b 134 mailrc signature
ce178f96 135 cgrc tigrc
e7d23024 136 gdbinit
8a7e906d 137 guile
1d89ce86 138 rcrc
5d25e440 139 toprc
cbffcf2b 140 aspell.conf
ccaac00b
MW
141 lisp-init.lisp:.cmucl-init.lisp
142 lisp-init.lisp:.sbclrc
143 lisp-init.lisp:.clisprc.lisp
f6335a0c 144 lisp-init.lisp:.eclrc
b5bf3445 145 swank.lisp
2425eca9 146 dircolors colordiffrc screenrc cvsrc indent.pro"
739bccbf 147[ "$xstuff" ] && dotfiles="$dotfiles
eae29a8c 148 xinitrc xsession Xdefaults vncrc vncsession
5e23020b 149 fonts.conf
e517857c 150 stalonetrayrc
1c6b19d4 151 putty-defaults:.putty/sessions/Default%20Settings
7cfa1f1a 152 eterm-theme.cfg:.Eterm/themes/Eterm/theme.cfg
739bccbf 153 e-keybindings.cfg:.enlightenment/keybindings.cfg
eae29a8c 154 evnc-keybindings.cfg:.enlightenment-vnc/keybindings.cfg
f4e43257 155 e16-bindings:.e16/bindings.cfg"
f617db13
MW
156echo "Installing dotfiles..."
157for d in $dotfiles; do
739bccbf
MW
158 target=.$d
159 case $d in
160 *:*) target=${d#*:} d=${d%%:*};;
161 esac
162 ft=$HOME$sub/$target
163 dir=${ft%/*}
164 mkdir -p $dir
99063107 165 ln -s $here/dot/$d $ft.new
739bccbf
MW
166 mv $ft.new $ft
167 echo " $target"
f617db13 168done
852cd5fb 169echo " all done."
f617db13 170
403dc178
MW
171## Substitute things which need substituting.
172dotfilessubst="
173 gitconfig
174 pulse-default.pa.in:.pulse/default.pa"
175echo "Installing dotfiles with substitutions..."
176for d in $dotfilessubst; do
177 case $d in
178 *:*) target=${d#*:} d=${d%%:*};;
179 *) target=.$d d=$d.in;;
180 esac
181 ft=$HOME$sub/$target
182 dir=${ft%/*}
183 mkdir -p $dir
184 sed "
1851i\
186### generated by $here/setup; do not edit!\
187
188/@home@/ s\a\a$HOME\ag
189/@releasekey@/ s\a\a$(bin/mdw-conf release-key 481334C2)\ag
190/@gitignore@/ s\a\a$(bin/mdw-conf gitignore $here/git/gitignore)\ag
191" dot/$d >$ft.new
192 mv $ft.new $ft
193 echo " $target"
194done
195echo " all done."
196
f4e43257 197## Symlink backgrounds.
960af1a5
MW
198backgrounds="
199 jue-peek.jpg
200 medusa.jpg
5236501e 201 bsg-supper.jpg
960af1a5 202 rayne.jpg
56c871ef 203 hypatia.jpg
e1ca556b
MW
204 noodly.jpg
205 lovelace.jpg"
f4e43257
MW
206if [ "$xstuff" ]; then
207 echo "Installing backgrounds..."
208 for b in $backgrounds; do
209 for e in enlightenment e16; do
210 dir=$HOME$sub/.$e/backgrounds
211 t=$dir/$b
212 mkdir -p $dir
99063107 213 ln -s $here/bg/$b $t.new
f4e43257
MW
214 mv $t.new $t
215 done
216 echo " $b"
217 done
218 echo " all done."
219fi
220
ce178f96 221###--------------------------------------------------------------------------
ce178f96
MW
222### Install useful scripts included in this package.
223
e04c4857 224scripts="
547fb8af 225 mdw-editor
b20bfd83 226 mdw-pager
b056f5c4 227 mdw-conf
7ee12623 228 mdw-build
c4e84cb1 229 emacsclient-hack
8e08f814 230 movemail-hack
68b2e9e6 231 aspell-hack
285a1386
MW
232 emerge-hack
233 lesspipe.sh
234 start-ssh-agent
4cdeb0d0
MW
235 svnwrap
236 hyperspec"
8e08f814 237[ "$xstuff" ] && scripts="$scripts
3bdada49 238 xinitcmd
34a5ea4e 239 un-backslashify-selection
c02999e8 240 lock-screen
8e08f814 241 xshutdown"
e04c4857
MW
242echo "Installing scripts..."
243mkdir -p $HOME$sub/bin
244for s in $scripts; do
245 ft=$HOME$sub/bin/$s
99063107 246 ln -s $here/bin/$s $ft.new
e04c4857
MW
247 mv $ft.new $ft
248 echo " $s"
249done
250echo " all done."
251
ce178f96
MW
252###--------------------------------------------------------------------------
253### Set up the Emacs config.
254
65ff0e8c
MW
255$echon "Finding a suitable emacs:$echoc"
256emacs=no
5fe24792 257for i in emacs22 emacs23 emacs21 emacs; do
65ff0e8c
MW
258 if type -p >/dev/null $i; then
259 emacs=$i
260 break
261 fi
262done
263if [ $emacs = no ]; then
264 echo " failed."
265 emacs=:
266else
267 echo " $emacs."
268fi
269
f617db13 270echo "Installing Emacs packages..."
400223a1
MW
271emacspkg="
272 make-regexp
a1293ade 273 ew-hols
a3bdb4d9 274 mdw-gnus-patch
1778b496 275 git git-blame vc-git stgit
400223a1
MW
276 quilt"
277for elib in $emacspkg; do
f617db13 278 $echon " $elib:$echoc"
65ff0e8c 279 if $false $emacs >/dev/null 2>&1 --no-site-file --batch --eval '
20eb0692 280 (progn
852cd5fb
MW
281 (setq load-path (nconc load-path (list "~/lib/emacs")))
282 (kill-emacs (condition-case nil
283 (progn (load-library "'"$elib"'") 0)
20eb0692 284 (error 1))))'; then
f617db13
MW
285 echo " already installed."
286 else
99063107
MW
287 if [ -f el/$elib.el ]; then
288 cp el/$elib.el $HOME$sub/lib/emacs/$elib.el
a3bdb4d9
MW
289 else
290 $echon " downloading$echoc"
291 $GETURL $HOME$sub/lib/emacs/$elib.el $REPO/$elib.el
292 fi
f617db13
MW
293 $echon " compiling$echoc"
294 (cd $HOME$sub/lib/emacs;
65ff0e8c 295 $emacs >/dev/null 2>&1 --no-site-file --batch \
20eb0692 296 --eval '(byte-compile-file "'"$elib.el"'")')
f617db13
MW
297 echo " done."
298 fi
299done
852cd5fb 300echo " all done."
f617db13
MW
301
302$echon "Setting up Emacs configuration:$echoc"
303$echon " linking$echoc"
99063107 304for f in dot-emacs.el Makefile; do
f617db13 305 set -- $(echo $link | tr : ' ')
99063107
MW
306 ln -s $here/el/$f $HOME$sub/lib/emacs/$f.new
307 mv $HOME$sub/lib/emacs/$f.new $HOME$sub/lib/emacs/$f
f617db13
MW
308done
309$echon " compiling$echoc"
65ff0e8c 310make >/dev/null 2>&1 -C $HOME$sub/lib/emacs EMACS=$emacs
f617db13 311echo " done."
ce178f96
MW
312
313###----- That's all, folks --------------------------------------------------