[UPDATE] Use bootstrap and Makefile installation

Instead of running `install.sh` to link all my packages, I split the
configuration into its CLI components and packages that need a Xorg
display server set-up.

This uses the `bootstrap.sh` script to make sure the needed dependencies
are installed. The `Makefile` can install all the packages or CLI ones
only.
This commit is contained in:
Bruno BELANYI 2019-10-29 15:59:00 +01:00
parent 13e2ea1b6a
commit 8bedc06072
3 changed files with 138 additions and 33 deletions

118
Makefile Normal file
View file

@ -0,0 +1,118 @@
CLI_PACKAGES := \
bash \
flake8 \
git \
isort \
ranger \
scripts \
shell \
vim \
zsh \
VISUAL_PACKAGES := \
X \
desktop \
dunst \
i3 \
i3blocks \
redshift \
rofi \
termite \
tridactyl \
wallpapers \
CLI_DEPENDENCIES := \
aur/bitwarden-cli \
aur/cppreference \
aur/global \
aur/stdman \
aur/zsh-fast-syntax-highlighting-git \
community/bat \
community/git-lfs \
community/lesspipe \
community/mosh \
community/pandoc \
community/shellcheck \
community/shfmt \
community/stow \
community/tig \
community/zsh-completions \
core/archlinux-keyring \
core/openssh \
extra/bash-completion \
extra/ctags \
extra/git \
extra/imagemagick \
extra/keychain \
extra/networkmanager \
extra/zsh \
VISUAL_DEPENDENCIES := \
aur/bitwarden-rofi \
aur/i3-battery-popup-git \
aur/i3blocks-contrib-git \
aur/networkmanager-dmenu-git \
aur/spotify \
community/dunst \
community/firefox-tridactyl \
community/playerctl \
community/redshift \
community/xautolock \
community/xsel \
community/zathura \
community/zathura-cb \
community/zathura-djvu \
community/zathura-pdf-poppler \
community/zathura-ps \
extra/firefox \
extra/nm-connection-editor \
extra/thunderbird \
extra/vlc \
RUST_DEPENDENCIES := \
clippy \
rustfmt \
STOW_TARGET := $(HOME)
STOW = stow -t $(STOW_TARGET) -R -v
.PHONY: all
all: install
# Install packages and their dependencies
.PHONY: install-cli
install-cli: install-cli-deps
install-cli: $(addprefix stow-,$(CLI_PACKAGES))
install-cli: rust
.PHONY: install
install: install-cli
install: install-visual-deps
install: $(addprefix stow-,$(VISUAL_PACKAGES))
.PHONY: install-cli-deps
install-cli-deps:
yay -S $(CLI_DEPENDENCIES)
.PHONY: install-visual-deps
install-visual-deps:
yay -S $(VISUAL_DEPENDENCIES)
# Installing configuration packages
stow-%: %
$(STOW) $<
stow-scripts: STOW_TARGET=~/.scripts
stow-scripts: scripts
mkdir -p $(STOW_TARGET)
$(STOW) $<
stow-vim: vim
$(STOW) $<
vim +PlugInstall
# Development related installations
.PHONY: rust
rust:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
rustup component add $(RUST_DEPENDENCIES)

20
bootstrap.sh Executable file
View file

@ -0,0 +1,20 @@
#!/usr/bin/env bash
# Exit on errors
set -e
# Install pre-requisite packages for installing packages and connecting
prerequisite() {
sudo pacman -S base base-devel git stow mosh
}
# Install the yay AUR helper
install-yay() {
git clone https://aur.archlinux.org/yay.git
pushd yay || exit 1
makepkg -si
popd || exit 1
}
prerequisite
install-yay

View file

@ -1,33 +0,0 @@
#! /usr/bin/sh
# Configuration files
stow -t ~ X
stow -t ~ bash
stow -t ~ dunst
stow -t ~ emacs
stow -t ~ flake8
stow -t ~ git
stow -t ~ i3
stow -t ~ i3blocks
stow -t ~ isort
stow -t ~ ranger
stow -t ~ redshift
stow -t ~ rofi
stow -t ~ termite
stow -t ~ tridactyl
stow -t ~ vim
stow -t ~ zsh
# Create the directory if needed
mkdir -p ~/.scripts
# Scripts must be in their own directory
stow -t ~/.scripts scripts/
# Common shell files
stow -t ~ shell/
# Wallpapers
stow -t ~ wallpapers/
# Symlink the '.desktop' files (btmenu needs one)
stow -t ~ desktop