APATH := $(realpath .) XDG_CONFIG_HOME ?= ~/.config XDG_CACHE_HOME ?= ~/.cache XDG_DATA_HOME ?= ~/.local/share FILES := bin DOTFILES := goobookrc profile Xresources CONFIGFILES := mpv offlineimap ranger retroarch xbindkeys xkb .PHONY: core_files core_files: dircolors git ranger ssh systemd tmux vim zsh .PHONY: desktop desktop: core_files awesome kitty picom qutebrowser rofi xkb .PHONY: install $(FILES) $(DOTFILES) $(CONFIGFILES) install: $(FILES) $(DOTFILES) $(CONFIGFILES) $(XDG_DATA_HOME) $(XDG_CONFIG_HOME): mkdir -p $@ awesome: $(XDG_CONFIG_HOME) xinit ln -sfT $(APATH)/awesome $(XDG_CONFIG_HOME)/awesome ln -sfT $(APATH)/zlogin ~/.zlogin git submodule update --init \ awesome/widgets/pomodoro \ awesome/widgets/net_widgets .PHONY: awesome dircolors: $(XDG_CONFIG_HOME) ln -sfT $(APATH)/dircolors $(XDG_CONFIG_HOME)/dircolors .PHONY: dircolors gdb: mkdir $(XDG_DATA_HOME)/gdb ln -sfT $(APATH)/gdb $(XDG_CONFIG_HOME)/gdb ln -sfT $(APATH)/gdbinit ~/.gdbinit .PHONY: gdb git: $(XDG_CONFIG_HOME) ln -sfT $(APATH)/git $(XDG_CONFIG_HOME)/git ln -sfT $(APATH)/tig $(XDG_CONFIG_HOME)/tig .PHONY: git gnupg: systemd ln -sfT $(APATH)/$@ $(XDG_CONFIG_HOME)/$@ chmod 700 $(XDG_CONFIG_HOME)/$@ systemctl --user enable gpg-agent.socket gpg-agent-extra.socket gpg-agent-browser.socket dirmngr.socket systemctl --user start gpg-agent.socket gpg-agent-extra.socket gpg-agent-browser.socket dirmngr.socket sudo ln -sfT $(APATH)/bin/pinentry /usr/local/bin/pinentry .PHONY: gnupg khal: $(XDG_CONFIG_HOME) ln -sfT $(APATH)/$@ $(XDG_CONFIG_HOME)/$@ .PHONY: khal khard: $(XDG_CONFIG_HOME) ln -sfT $(APATH)/$@ $(XDG_CONFIG_HOME)/$@ .PHONY: khard kitty: ln -sfT $(APATH)/$@ $(XDG_CONFIG_HOME)/$@ .PHONY: kitty mpd: systemd ln -sfT $(APATH)/mpd $(XDG_CONFIG_HOME)/mpd mkdir -p $(XDG_DATA_HOME)/mpd/playlists systemctl --user enable mpd systemctl --user start mpd .PHONY: mpd mbsync: ln -sfT $(APATH)/mbsync $(XDG_CONFIG_HOME)/mbsync .PHONY: mbsync msmtp: ln -sfT $(APATH)/msmtprc ~/.msmtprc ln -sfT $(APATH)/msmtp ~/.msmtp .PHONY: msmtp mutt: $(XDG_CONFIG_HOME) ln -sfT $(APATH)/mutt $(XDG_CONFIG_HOME)/mutt .PHONY: mutt mail: mbsync msmtp mutt .PHONY: mail ncmpcpp: $(XDG_CONFIG_HOME) ln -sfT $(APATH)/ncmpcpp $(XDG_CONFIG_HOME)/ncmpcpp mkdir -p $(XDG_DATA_HOME)/mpd/lyrics .PHONY: ncmpcpp pacman: $(XDG_CONFIG_HOME) ln -sfT $(APATH)/$@ $(XDG_CONFIG_HOME)/$@ .PHONY: pacman picom: $(XDG_CONFIG_HOME) ln -sfT $(APATH)/$@ $(XDG_CONFIG_HOME)/$@ .PHONY: picom qute_scripts := $(wildcard qutebrowser/userscripts/*) $(qute_scripts): mkdir -p $(XDG_DATA_HOME)/qutebrowser/userscripts ln -sfT $(APATH)/$@ $(XDG_DATA_HOME)/$@ .PHONY: $(qute_scripts) qutebrowser: $(XDG_CONFIG_HOME) $(qute_scripts) ln -sfT $(APATH)/qutebrowser $(XDG_CONFIG_HOME)/qutebrowser mkdir -p ~/downloads .PHONY: qutebrowser rofi: $(XDG_CONFIG_HOME) ln -sfT $(APATH)/$@ $(XDG_CONFIG_HOME)/$@ .PHONY: rofi ssh: ln -sfT $(APATH)/ssh/config ~/.ssh/config .PHONY: ssh systemd: $(XDG_CONFIG_HOME) ln -sfT $(APATH)/$@ $(XDG_CONFIG_HOME)/$@ .PHONY: systemd task: $(XDG_CONFIG_HOME) ln -sfT $(APATH)/taskrc $(XDG_CONFIG_HOME)/taskrc .PHONY: task tmux: $(XDG_CONFIG_HOME) ln -sfT $(APATH)/tmux $(XDG_CONFIG_HOME)/tmux git submodule update --init \ tmux/plugins/nord-tmux \ tmux/plugins/tpm .PHONY: tmux urxvt: $(XDG_CONFIG_HOME) ln -sfT $(APATH)/urxvt $(XDG_CONFIG_HOME)/urxvt .PHONY: urxvt vdirsyncer: $(XDG_CACHE_HOME) ln -sfT $(APATH)/$@ $(XDG_CONFIG_HOME)/$@ mkdir -p $(XDG_DATA_HOME)/vdirsyncer/{contacts,calendars} .PHONY: vdirsyncer vim: $(XDG_CONFIG_HOME) ln -sfT $(APATH)/vim $(XDG_CONFIG_HOME)/vim mkdir -p $(XDG_DATA_HOME)/vim .PHONY: vim yay: $(XDG_CONFIG_HOME) ln -sfT $(APATH)/yay $(XDG_CONFIG_HOME)/yay mkdir -p $(XDG_CACHE_HOME)/yay xinit: $(XDG_CONFIG_HOME) xprofile ln -sfT $(APATH)/$@rc ~/.$@rc ln -sfT $(APATH)/$@ $(XDG_CONFIG_HOME)/$@ .PHONY: xinit xprofile: $(XDG_CONFIG_HOME) ln -sfT $(APATH)/$@ ~/.$@ ln -sfT $(APATH)/$@.d $(XDG_CONFIG_HOME)/$@.d .PHONY: xprofile wakeonlan: $(XDG_CONFIG_HOME) ln -sfT $(APATH)/$@ $(XDG_CONFIG_HOME)/$@ .PHONY: wakeonlan weechat: $(XDG_CONFIG_HOME) $(XDG_CACHE_HOME) ln -sfT $(APATH)/weechat $(XDG_CONFIG_HOME)/weechat mkdir -p $(XDG_CACHE_HOME)/weechat .PHONY: weechat zsh: $(XDG_CONFIG_HOME) ln -sfT $(APATH)/zshrc ~/.zshrc ln -sfT $(APATH)/zshenv ~/.zshenv ln -sfT $(APATH)/zsh $(XDG_CONFIG_HOME)/zsh ln -sfT $(APATH)/aliases $(XDG_CONFIG_HOME)/aliases mkdir -p $(XDG_CACHE_HOME)/zsh mkdir -p $(XDG_DATA_HOME)/zsh git submodule update --init zsh/lib/zsh-syntax-highlighting .PHONY: zsh $(FILES): @if [[ -e ~/$@ && ! -L ~/$@ ]]; then \ if [[ -d $@ ]]; then \ cp -r ~/$@/* $@; \ else \ cp -r ~/$@ $@; \ fi; \ rm -r ~/$@; \ fi; ln -sfT $(APATH)/$@ ~/$@ $(DOTFILES): @if [[ -e ~/.$@ && ! -L ~/.$@ ]]; then \ if [[ -d .$@ ]]; then \ cp -r ~/.$@/* $@; \ else \ cp -r ~/.$@ $@; \ fi; \ rm -r ~/.$@; \ fi; ln -sfT $(APATH)/$@ ~/.$@ $(CONFIGFILES): $(XDG_CONFIG_HOME) @if [[ -e $(XDG_CONFIG_HOME)/$@ && ! -L $(XDG_CONFIG_HOME)/$@ ]]; then \ if [[ -d .config/$@ ]]; then \ cp -r $(XDG_CONFIG_HOME)/$@/* $@; \ else \ cp -r $(XDG_CONFIG_HOME)/$@ $@; \ fi; \ rm -r $(XDG_CONFIG_HOME)/$@; \ fi; ln -sfT $(APATH)/$@ $(XDG_CONFIG_HOME)/$@