ambevar-dotfiles/.local/bin/homeinit

95 lines
2.6 KiB
Plaintext
Raw Normal View History

#!/bin/sh
## Home session initialization.
if [ "$1" = "-h" ]; then
cat <<EOF>&2
Usage: ${0##*/}
Initialize home folder.
Options:
-u: Update Go tools.
EOF
exit
fi
OPT_GO=""
if [ "$1" = "-u" ]; then
OPT_GO="-u"
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"
## ln no-clobber
lnn() {
if [ ! -e "$2" ] || [ -h "$2" ]; then
ln -svnf "$1" "$2"
fi
}
## git-update <repo> <dest-folder>
git_update() {
if [ -e "$2" ]; then
pushd "$2"
git pull
popd
else
git clone "$1" "$2"
fi
}
2017-07-29 10:31:30 +02:00
echo "==> 'temp' folder"
mkdir -pv "$HOME/temp"
echo "==> Bookmarks"
mkdir -pv "$XDG_CONFIG_HOME/qutebrowser/bookmarks"
lnn "$SOURCEDIR/bookmarks/bookmarks" "$XDG_CONFIG_HOME/qutebrowser/bookmarks/urls"
lnn "$SOURCEDIR/bookmarks/quickmarks" "$XDG_CONFIG_HOME/qutebrowser/"
if command -v emacs >/dev/null 2>&1; then
echo "==> Emacs ELPA packages"
2017-07-29 10:31:30 +02:00
yes | emacs --batch -l ~/.emacs.d/init.el --eval '(progn (package-refresh-contents) (package-install-selected-packages))'
echo "==> Emacs extra packages"
mkdir -pv ~/.emacs.d/site-lisp
fi
echo "==> Go path"
2016-09-24 03:48:47 +02:00
mkdir -pv "$HOME/go" "$HOME/.go-tools"
if command -v go >/dev/null 2>&1; then
echo "==> Go extra dev tools"
2016-09-24 03:48:47 +02:00
export GOPATH="$HOME/.go-tools"
export PATH="$PATH:$GOPATH/bin"
go get -v $OPT_GO -ldflags "-s -w" github.com/alecthomas/gometalinter && gometalinter -i $OPT_GO
strip -s "$GOPATH"/bin/*
## See https://dominik.honnef.co/posts/2014/12/an_incomplete_list_of_go_tools/.
## https://dominik.honnef.co/go/
go get -v $OPT_GO -ldflags "-s -w" \
github.com/nsf/gocode \
github.com/rogpeppe/godef
fi
echo "==> Mail"
lnn "$SOURCEDIR/mail/mbsyncrc" "$HOME/.mbsyncrc"
mkdir -pv "$HOME/.cache/mail/"
while IFS= read -r i; do
2017-07-29 10:31:30 +02:00
## 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)
EOF
2017-07-29 10:31:30 +02:00
if [ ! -e ~/.authinfo.gpg ]; then
## TODO: Why does it prompt for the GPG passphrase twice per account?
## TODO: Does not work with --batch for some reason, so we have to spawn Emacs.
emacs --eval '(progn (when (require '"'"'mu4e nil t) (let ((auth-sources (list "~/.authinfo.gpg")) (auth-source-save-behavior t)) (dolist (context mu4e-contexts) (mu4e-context-switch nil (mu4e-context-name context)) (funcall (plist-get (car (auth-source-search :max 1 :host smtpmail-smtp-server :port smtpmail-smtp-service :user smtpmail-smtp-user :require '"'"'(:user :secret) :create t)) :save-function))))) (kill-emacs))'
fi
mbsync -aV
mu index --maildir=~/.cache/mail