homeinit: Overhaul to maximize automation
parent
a6c8c16884
commit
ae03530323
|
@ -1,5 +1,5 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
## Home session initialization.
|
## Initialize and update user profile.
|
||||||
|
|
||||||
if [ "$1" = "-h" ]; then
|
if [ "$1" = "-h" ]; then
|
||||||
cat <<EOF>&2
|
cat <<EOF>&2
|
||||||
|
@ -16,10 +16,8 @@ EOF
|
||||||
fi
|
fi
|
||||||
|
|
||||||
OPT_UPDATE=true
|
OPT_UPDATE=true
|
||||||
OPT_GO="-u"
|
|
||||||
if [ "$1" = "-u" ]; then
|
if [ "$1" = "-u" ]; then
|
||||||
OPT_UPDATE=false
|
OPT_UPDATE=false
|
||||||
OPT_GO=""
|
|
||||||
shift
|
shift
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -37,16 +35,37 @@ lnn() {
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
## git-update <repo> <dest-folder>
|
echo "==> Initial packages"
|
||||||
git_update() {
|
if command -v pacman >/dev/null 2>&1; then
|
||||||
if [ -e "$2" ]; then
|
sudo pacman --noconfirm -S --needed gnupg git stow
|
||||||
pushd "$2"
|
elif command -v guix >/dev/null 2>&1; then
|
||||||
git pull
|
guix package --install gnupg git stow
|
||||||
popd
|
fi
|
||||||
else
|
|
||||||
git clone "$1" "$2"
|
echo "==> GPG"
|
||||||
fi
|
if [ -d ~/.gnupg ]; then
|
||||||
}
|
chmod go-rwx ~/.gnupg ~/.gnupg/*
|
||||||
|
[ -e "$SOURCEDIR" ] || git clone git@gitlab.com:Ambrevar/personal
|
||||||
|
mkdir ~/.password-store
|
||||||
|
[ -e ~/.password-store ] || git clone git@gitlab.com:Ambrevar/password-store ~/.password-store
|
||||||
|
else
|
||||||
|
echo "~/.gnupg not found."
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "==> Persistent folders"
|
||||||
|
for i in .emacs.d .local/share projects temp; do
|
||||||
|
mkdir -pv "$HOME/$i"
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "==> dotfiles"
|
||||||
|
if [ -e ~/dotfiles ]; then
|
||||||
|
git remote origin set-url git@github.com:Ambrevar/dotfiles
|
||||||
|
else
|
||||||
|
git clone git@github.com:Ambrevar/dotfiles
|
||||||
|
fi
|
||||||
|
pushd ~/dotfiles
|
||||||
|
stow -v .
|
||||||
|
popd
|
||||||
|
|
||||||
echo "==> System packages"
|
echo "==> System packages"
|
||||||
if command -v pacman >/dev/null 2>&1; then
|
if command -v pacman >/dev/null 2>&1; then
|
||||||
|
@ -78,27 +97,18 @@ if command -v pacman >/dev/null 2>&1; then
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "==> 'temp' folder"
|
|
||||||
mkdir -pv "$HOME/temp"
|
|
||||||
|
|
||||||
echo "==> '.local' folder"
|
|
||||||
mkdir -pv "$HOME/.local/bin"
|
|
||||||
mkdir -pv "$HOME/.local/share"
|
|
||||||
|
|
||||||
echo "==> Bookmarks"
|
echo "==> Bookmarks"
|
||||||
mkdir -pv "$XDG_CONFIG_HOME/qutebrowser/bookmarks"
|
mkdir -pv "$XDG_CONFIG_HOME/qutebrowser/bookmarks"
|
||||||
lnn "$SOURCEDIR/bookmarks/bookmarks" "$XDG_CONFIG_HOME/qutebrowser/bookmarks/urls"
|
lnn "$SOURCEDIR/bookmarks/bookmarks" "$XDG_CONFIG_HOME/qutebrowser/bookmarks/urls"
|
||||||
lnn "$SOURCEDIR/bookmarks/quickmarks" "$XDG_CONFIG_HOME/qutebrowser/"
|
lnn "$SOURCEDIR/bookmarks/quickmarks" "$XDG_CONFIG_HOME/qutebrowser/"
|
||||||
|
|
||||||
echo "==> 'projects' folder"
|
if ! command -v emacs >/dev/null 2>&1 || \
|
||||||
mkdir -pv "$HOME/projects"
|
|
||||||
|
|
||||||
## Only build latest Emacs if not on Guix.
|
|
||||||
if ! command -v guix >/dev/null 2>&1; then
|
|
||||||
if ! command -v emacs >/dev/null 2>&1 || \
|
|
||||||
[ $(emacs --quick --batch --eval '(message "%s" emacs-major-version)' 2>&1) -lt 26 ]; then
|
[ $(emacs --quick --batch --eval '(message "%s" emacs-major-version)' 2>&1) -lt 26 ]; then
|
||||||
pushd "$HOME/projects"
|
pushd "$HOME/projects"
|
||||||
git clone https://git.savannah.gnu.org/git/emacs.git
|
[ -e emacs ] || git clone https://git.savannah.gnu.org/git/emacs.git
|
||||||
|
if command -v guix >/dev/null 2>&1; then
|
||||||
|
guix package --install emacs-dev
|
||||||
|
else
|
||||||
mkdir -p ../emacs-build
|
mkdir -p ../emacs-build
|
||||||
cd ../emacs-build
|
cd ../emacs-build
|
||||||
../emacs/configure \
|
../emacs/configure \
|
||||||
|
@ -127,32 +137,32 @@ if ! command -v guix >/dev/null 2>&1; then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if command -v emacs >/dev/null 2>&1; then
|
if command -v emacs >/dev/null 2>&1; then
|
||||||
echo "==> '.emacs.d' folder"
|
|
||||||
mkdir -pv "$HOME/.emacs.d"
|
|
||||||
|
|
||||||
## TODO: Don't load on Guix once all packages are ready.
|
|
||||||
mkdir -pv "$HOME/.cache/emacs/"
|
mkdir -pv "$HOME/.cache/emacs/"
|
||||||
if $OPT_UPDATE; then
|
if ! command -v guix >/dev/null 2>&1; then
|
||||||
echo "==> Emacs ELPA packages"
|
if $OPT_UPDATE; then
|
||||||
yes | emacs --batch -l ~/.emacs.d/init.el --eval '(progn (package-refresh-contents) (package-install-selected-packages))'
|
echo "==> Emacs ELPA packages"
|
||||||
|
yes | emacs --batch -l ~/.emacs.d/init.el --eval '(progn (package-refresh-contents) (package-install-selected-packages))'
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
echo "==> Emacs extra packages"
|
echo "==> Emacs extra packages"
|
||||||
mkdir -pv ~/.local/share/emacs/site-lisp
|
mkdir -pv ~/.local/share/emacs/site-lisp
|
||||||
# git_update https://github.com/emacs-helm/helm-eww ~/.local/share/emacs/site-lisp
|
for i in ~/.local/share/emacs/site-lisp/*; do
|
||||||
|
pushd "$i"
|
||||||
|
git pull
|
||||||
|
popd
|
||||||
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "==> Mail"
|
echo "==> Mail"
|
||||||
lnn "$SOURCEDIR/mail/mbsyncrc" "$HOME/.mbsyncrc"
|
lnn "$SOURCEDIR/mail/mbsyncrc" "$HOME/.mbsyncrc"
|
||||||
lnn "$SOURCEDIR/mail/authinfo.gpg" "$HOME/.authinfo.gpg"
|
lnn "$SOURCEDIR/mail/authinfo.gpg" "$HOME/.authinfo.gpg"
|
||||||
mkdir -pv "$HOME/.cache/mail/"
|
mkdir -pv "$HOME/.cache/mail/"
|
||||||
if $OPT_UPDATE; then
|
while IFS= read -r i; do
|
||||||
while IFS= read -r i; do
|
## We get a shell command, so we need to evaluate it to expand "~".
|
||||||
## We get a shell command, so we need to evaluate it to expand "~".
|
eval "$i"
|
||||||
eval "$i"
|
done <<EOF
|
||||||
done <<EOF
|
|
||||||
$(awk '/^Path/ {$1="mkdir -pv"; print}' ~/.mbsyncrc)
|
$(awk '/^Path/ {$1="mkdir -pv"; print}' ~/.mbsyncrc)
|
||||||
EOF
|
EOF
|
||||||
fi
|
|
||||||
|
|
||||||
if $OPT_UPDATE; then
|
if $OPT_UPDATE; then
|
||||||
mbsync -aV
|
mbsync -aV
|
||||||
|
|
Loading…
Reference in New Issue