95 lines
2.6 KiB
Plaintext
95 lines
2.6 KiB
Plaintext
![]() |
#!/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
|
||
|
|
||
![]() |
SOURCEDIR="$HOME/personal"
|
||
![]() |
[ -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
|
||
|
}
|
||
![]() |
|
||
![]() |
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"
|
||
![]() |
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"
|
||
![]() |
mkdir -pv "$HOME/go" "$HOME/.go-tools"
|
||
![]() |
if command -v go >/dev/null 2>&1; then
|
||
![]() |
echo "==> Go extra dev tools"
|
||
![]() |
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
|
||
![]() |
## We get a shell command, so we need to evaluate it to expand "~".
|
||
|
eval "$i"
|
||
![]() |
done <<EOF
|
||
![]() |
$(awk '/^Path/ {$1="mkdir -pv"; print}' ~/.mbsyncrc)
|
||
![]() |
EOF
|
||
![]() |
|
||
|
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
|