DEFAULT_TARGETS += $(HOME)/.bash_profile \
		   $(HOME)/.vim/bundle/Vundle.vim $(HOME)/.vimrc \
		   $(HOME)/.inputrc \
		   $(HOME)/.config/alacritty/alacritty.toml \
		   aliases \
		   $(HOME)/.profile.d profileds
ALIASES = $(foreach a,$(wildcard .aliases/*),$(subst .aliases/,$(HOME)/.aliases/,$(a)))
PROFILEDS = $(foreach p,$(wildcard .profile.d/*),$(subst .profile.d/,$(HOME)/.profile.d/,$(p)))

UNAME = $(shell uname -s)
ifeq ($(UNAME),Darwin)
	DEFAULT_TARGETS += /opt/local/etc/bashrc.mac \
			   /opt/local/etc/bashrc
	PROFILE = .profile.mac
	INSTALL = ginstall
	OPEN = open
else ifeq ($(UNAME),FreeBSD)
	DEFAULT_TARGETS += $(HOME)/.bashrc \
			   $(HOME)/.bashrc.freebsd \
			   $(HOME)/.profile.freebsd
	PROFILE = .profile
	INSTALL = ginstall
	OPEN = xdg-open
else ifeq ($(UNAME),Linux)
	DEFAULT_TARGETS += $(HOME)/.bashrc \
			   $(HOME)/.profile.linux
	PROFILE = .profile
	INSTALL = install
	OPEN = xdg-open
else
	DEFAULT_TARGETS += $(HOME)/.bashrc
	PROFILE = .profile
	INSTALL = install
	OPEN = xdg-open
endif

install: $(DEFAULT_TARGETS)

### SHELL COMFY ################################################################

$(HOME)/.aliases/%: .aliases/%
	$(INSTALL) -D -m 644 $< $@

aliases: $(ALIASES)

$(HOME)/.profile.d:
	mkdir $@

$(HOME)/.profile.d/%: .profile.d/% $(HOME)/.profile.d
	cp $< $@

profileds: $(PROFILEDS)

$(HOME)/.bash_profile: $(PROFILE)
	cp $< $@

$(HOME)/.profile.%: .profile.%
	cp $< $@

$(HOME)/.bashrc: .bashrc
	cp $< $@

$(HOME)/.inputrc: .inputrc
	cp $< $@

$(HOME)/.bashrc.%: .bashrc.%
	cp $< $@

/opt/local/etc/bashrc: .bashrc
	sudo cp $< $@

/opt/local/etc/bashrc.%: .bashrc.%
	sudo cp $< $@

### TERMINAL EMULATOR ##########################################################

$(HOME)/.config/alacritty/alacritty.toml: .config/alacritty/alacritty.toml
	$(INSTALL) -D -m 644 $< $@

alacritty: $(HOME)/.config/alacritty/alacritty.toml

### SWAY #######################################################################

$(HOME)/.sway/config: .sway/config
	$(INSTALL) -D -m 644 $< $@

$(HOME)/.config/i3status/config: .config/i3status/config
	$(INSTALL) -D -m 644 $< $@

i3status: $(HOME)/.config/i3status/config

sway: $(HOME)/.sway/config $(HOME)/.config/i3status/config

### VIM ########################################################################

$(HOME)/.vimrc: .vimrc
	cp $< $@

$(HOME)/.vim/bundle:
	mkdir -p $@

$(HOME)/.vim/bundle/Vundle.vim: $(HOME)/.vim/bundle
	git clone https://github.com/VundleVim/Vundle.vim.git $@ || cd $@; git pull; exit 0

### PIPEWIRE ###################################################################

$(HOME)/.config/pipewire/pipewire.conf: .config/pipewire/pipewire.conf
	$(INSTALL) -D -m 644 $< $@

restart-pw:
	systemctl restart --user pipewire{,-pulse}{.service,.socket}

### X.ORG CRAP #################################################################

$(HOME)/.Xmodcapslock: x-crap/.Xmodcapslock
	cp $< $@

$(HOME)/.Xdefaults: x-crap/.Xdefaults
	cp $< $@

$(HOME)/.Xresources: x-crap/.Xresources
	cp $< $@

$(HOME)/.xinitrc: x-crap/.xinitrc
	cp $< $@

x-crap: $(HOME)/.Xmodcapslock $(HOME)/.Xdefaults $(HOME)/.Xresources $(HOME)/.xinitrc

### "PHONY" TARGETS ############################################################

.PHONY: aliases profileds README x-crap sway i3status restart-pw pipewire alacritty

### README #####################################################################

pub.css:
	wget https://github.com/manuelp/pandoc-stylesheet/raw/acac36b976966f76544176161ba826d519b6f40c/pub.css

# Requires Pandoc to be installed
README.html: README.md pub.css
	pandoc $< -s -c pub.css -o README.html
	$(OPEN) README.html

README: README.html
