2012-07-28 19:39:12 +02:00
|
|
|
#!/bin/sh
|
2012-07-28 20:04:21 +02:00
|
|
|
## Home session initialization.
|
2014-11-12 16:15:39 +01:00
|
|
|
|
2017-05-05 20:29:00 +02:00
|
|
|
if [ "$1" = "-h" ]; then
|
|
|
|
cat <<EOF>&2
|
|
|
|
Usage: ${0##*/}
|
|
|
|
|
|
|
|
Initialize home folder.
|
|
|
|
|
|
|
|
Options:
|
|
|
|
|
2018-02-11 20:00:14 +01:00
|
|
|
-u: Skip large updates (packages, etc.)
|
2017-05-05 20:29:00 +02:00
|
|
|
|
|
|
|
EOF
|
|
|
|
exit
|
|
|
|
fi
|
|
|
|
|
2018-02-11 20:00:14 +01:00
|
|
|
OPT_UPDATE=true
|
|
|
|
OPT_GO="-u"
|
2017-05-05 20:29:00 +02:00
|
|
|
if [ "$1" = "-u" ]; then
|
2018-02-11 20:00:14 +01:00
|
|
|
OPT_UPDATE=false
|
|
|
|
OPT_GO=""
|
2017-05-05 20:29:00 +02:00
|
|
|
shift
|
|
|
|
fi
|
|
|
|
|
2016-10-12 11:03:57 +02:00
|
|
|
SOURCEDIR="$HOME/personal"
|
2012-10-29 15:29:54 +01:00
|
|
|
[ -z "$XDG_CONFIG_HOME" ] && XDG_CONFIG_HOME="$HOME/.config"
|
|
|
|
[ -z "$XDG_DATA_HOME" ] && XDG_DATA_HOME="$HOME/.local/share"
|
2012-07-28 20:04:21 +02:00
|
|
|
|
2017-07-24 18:25:31 +02:00
|
|
|
## ln no-clobber
|
|
|
|
lnn() {
|
2018-01-11 11:19:20 +01:00
|
|
|
if [ -d "$2" ]; then
|
|
|
|
set -- "$1" "$2/$(basename "$1")"
|
|
|
|
fi
|
2017-07-24 18:25:31 +02:00
|
|
|
if [ ! -e "$2" ] || [ -h "$2" ]; then
|
|
|
|
ln -svnf "$1" "$2"
|
|
|
|
fi
|
|
|
|
}
|
2013-05-04 00:30:11 +02:00
|
|
|
|
2017-10-26 00:55:35 +02:00
|
|
|
## git-update <repo> <dest-folder>
|
2017-10-26 19:12:18 +02:00
|
|
|
git_update() {
|
2017-10-26 00:55:35 +02:00
|
|
|
if [ -e "$2" ]; then
|
|
|
|
pushd "$2"
|
|
|
|
git pull
|
|
|
|
popd
|
|
|
|
else
|
|
|
|
git clone "$1" "$2"
|
|
|
|
fi
|
|
|
|
}
|
2017-07-29 10:31:30 +02:00
|
|
|
|
2018-01-11 11:06:43 +01:00
|
|
|
echo "==> System packages"
|
|
|
|
if command -v pacman >/dev/null 2>&1; then
|
|
|
|
pacman_list=""
|
|
|
|
if [ -f ~/.pkglists/arch-official ]; then
|
|
|
|
pacman_list="$(cat ~/.pkglists/arch-official)"
|
|
|
|
fi
|
|
|
|
sudo pacman --noconfirm -S --needed base base-devel $pacman_list
|
|
|
|
if ! command -v cower >/dev/null 2>&1; then
|
|
|
|
mkdir -p /tmp/cower
|
|
|
|
pushd /tmp/cower
|
|
|
|
curl https://aur.archlinux.org/cgit/aur.git/plain/PKGBUILD?h=cower > PKGBUILD
|
|
|
|
makepkg --noconfirm -si
|
|
|
|
popd
|
|
|
|
fi
|
|
|
|
if ! command -v pacaur >/dev/null 2>&1; then
|
|
|
|
mkdir -p /tmp
|
|
|
|
cower -d pacaur
|
|
|
|
pushd /tmp/pacaur
|
|
|
|
makepkg --noconfirm -si
|
|
|
|
popd
|
|
|
|
fi
|
|
|
|
if $OPT_UPDATE && [ -f ~/.pkglists/arch-aur ]; then
|
|
|
|
pacaur --noconfirm --noedit -y --needed "$(cat ~/.pkglists/arch-aur)"
|
|
|
|
fi
|
2018-01-11 11:32:28 +01:00
|
|
|
pacman_list=$(pacman -Qdtq)
|
|
|
|
if [ -n "$pacman_list" ]; then
|
|
|
|
sudo pacman --noconfirm -Rs "$pacman_list"
|
|
|
|
fi
|
2018-01-11 11:06:43 +01:00
|
|
|
fi
|
|
|
|
|
2017-07-24 18:25:31 +02:00
|
|
|
echo "==> 'temp' folder"
|
|
|
|
mkdir -pv "$HOME/temp"
|
2012-07-28 20:04:21 +02:00
|
|
|
|
2016-05-31 10:43:04 +02:00
|
|
|
echo "==> Bookmarks"
|
2017-07-09 00:08:45 +02:00
|
|
|
mkdir -pv "$XDG_CONFIG_HOME/qutebrowser/bookmarks"
|
2017-07-24 18:25:31 +02:00
|
|
|
lnn "$SOURCEDIR/bookmarks/bookmarks" "$XDG_CONFIG_HOME/qutebrowser/bookmarks/urls"
|
|
|
|
lnn "$SOURCEDIR/bookmarks/quickmarks" "$XDG_CONFIG_HOME/qutebrowser/"
|
2013-01-09 19:25:23 +01:00
|
|
|
|
2017-07-24 18:25:31 +02:00
|
|
|
if command -v emacs >/dev/null 2>&1; then
|
2018-01-11 11:06:43 +01:00
|
|
|
if $OPT_UPDATE; then
|
|
|
|
echo "==> Emacs ELPA packages"
|
|
|
|
yes | emacs --batch -l ~/.emacs.d/init.el --eval '(progn (package-refresh-contents) (package-install-selected-packages))'
|
|
|
|
fi
|
2017-10-26 19:12:18 +02:00
|
|
|
echo "==> Emacs extra packages"
|
2017-10-16 19:21:24 +02:00
|
|
|
mkdir -pv ~/.emacs.d/site-lisp
|
2017-07-24 18:25:31 +02:00
|
|
|
fi
|
2013-05-05 20:57:20 +02:00
|
|
|
|
2016-06-09 21:32:07 +02:00
|
|
|
echo "==> Go path"
|
2016-09-24 03:48:47 +02:00
|
|
|
mkdir -pv "$HOME/go" "$HOME/.go-tools"
|
2016-05-31 10:43:04 +02:00
|
|
|
if command -v go >/dev/null 2>&1; then
|
2016-06-09 21:32:07 +02:00
|
|
|
echo "==> Go extra dev tools"
|
2016-09-24 03:48:47 +02:00
|
|
|
export GOPATH="$HOME/.go-tools"
|
2016-05-31 10:43:04 +02:00
|
|
|
export PATH="$PATH:$GOPATH/bin"
|
2017-05-05 20:29:00 +02:00
|
|
|
|
|
|
|
go get -v $OPT_GO -ldflags "-s -w" github.com/alecthomas/gometalinter && gometalinter -i $OPT_GO
|
|
|
|
strip -s "$GOPATH"/bin/*
|
|
|
|
|
2016-05-06 09:24:40 +02:00
|
|
|
## See https://dominik.honnef.co/posts/2014/12/an_incomplete_list_of_go_tools/.
|
|
|
|
## https://dominik.honnef.co/go/
|
2017-05-05 20:29:00 +02:00
|
|
|
go get -v $OPT_GO -ldflags "-s -w" \
|
2016-05-06 09:24:40 +02:00
|
|
|
github.com/nsf/gocode \
|
2017-05-05 20:29:00 +02:00
|
|
|
github.com/rogpeppe/godef
|
2016-05-06 09:24:40 +02:00
|
|
|
fi
|
2016-06-09 21:32:07 +02:00
|
|
|
|
2017-07-24 18:25:31 +02:00
|
|
|
echo "==> Mail"
|
|
|
|
lnn "$SOURCEDIR/mail/mbsyncrc" "$HOME/.mbsyncrc"
|
2018-02-08 18:01:18 +01:00
|
|
|
lnn "$SOURCEDIR/mail/authinfo.gpg" "$HOME/.authinfo.gpg"
|
2017-07-24 18:25:31 +02:00
|
|
|
mkdir -pv "$HOME/.cache/mail/"
|
2018-01-11 11:06:43 +01:00
|
|
|
if $OPT_UPDATE; then
|
|
|
|
while IFS= read -r i; do
|
|
|
|
## We get a shell command, so we need to evaluate it to expand "~".
|
|
|
|
eval "$i"
|
|
|
|
done <<EOF
|
2017-07-29 10:31:30 +02:00
|
|
|
$(awk '/^Path/ {$1="mkdir -pv"; print}' ~/.mbsyncrc)
|
2017-07-24 18:25:31 +02:00
|
|
|
EOF
|
2018-01-11 11:06:43 +01:00
|
|
|
fi
|
2017-07-29 10:31:30 +02:00
|
|
|
|
2018-01-11 11:06:43 +01:00
|
|
|
if $OPT_UPDATE; then
|
|
|
|
mbsync -aV
|
|
|
|
mu index --maildir=~/.cache/mail
|
|
|
|
fi
|