summaryrefslogtreecommitdiff
path: root/Makefile
blob: ef4c91f9016e6f5c71c5040b19c72172f003a11c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
.POSIX:

DMENU       = dmenu-farajli-5.3
DWM         = dwm-farajli-6.5
FONT1       = LiberationMono
FONT2       = JetBrainsMono
SLSTATUS    = slstatus-farajli-1.0
ST          = st-farajli-0.9.2

FONTS       = $(FONT1) $(FONT2)
SOFTWARE    = $(DWM) $(DMENU) $(SLSTATUS) $(ST)
ARCHIVE     = $(SOFTWARE:=.tar.gz) $(FONTS:=.tar.gz)

BINDIR      = $(HOME)/.local/bin
BOOKDIR     = $(HOME)/tproj
CONFDIR     = $(HOME)/.config
FONTDIR     = $(HOME)/.local/share/fonts/
MUSICDIR    = $(HOME)/music
PROJDIR     = $(HOME)/proj
TESTPROJDIR = $(HOME)/tproj

BASHPROFILE = $(HOME)/.bash_profile
BASHRC      = $(HOME)/.bashrc
GITCONFIG   = $(HOME)/.gitconfig
ZCACHE      = $(HOME)/.cache/zsh/history
ZPROFILE    = $(HOME)/.zprofile
ZSHRC       = $(HOME)/.zshrc

COPY        = cp -r
LINK        = ln -sf

all: config directory scripts

full: config desktop directory scripts

desktop: dmenu-install dwm-install font1-install font2-install check slstatus-install st-install

config:
	mkdir -p                                $$(dirname $(ZCACHE))
	mkdir -p                                $(CONFDIR)/sites
	touch                                   $(ZCACHE)
	$(COPY) config/bash/bashrc              $(BASHRC)
	$(COPY) config/lf                       $(CONFDIR)
	$(COPY) config/mimeapps.list            $(CONFDIR)
	$(COPY) config/mpv                      $(CONFDIR)
	$(COPY) config/nsxiv                    $(CONFDIR)
	$(COPY) config/nvim                     $(CONFDIR)
	$(COPY) config/picom                    $(CONFDIR)
	$(COPY) config/qutebrowser              $(CONFDIR)
	$(COPY) config/shell                    $(CONFDIR)
	$(COPY) config/sites/bookmarks.txt      $(CONFDIR)/sites
	$(COPY) config/sxiv                     $(CONFDIR)
	$(COPY) config/vim                      $(CONFDIR)
	$(COPY) config/x11                      $(CONFDIR)
	$(COPY) config/zathura                  $(CONFDIR)
	$(COPY) config/zsh/zshrc                $(ZSHRC)
	$(LINK) $(CONFDIR)/shell/profile        $(BASHPROFILE)
	$(LINK) $(CONFDIR)/shell/profile        $(ZPROFILE)

git:
	sed '/# signingkey = <to be set manually>/d' config/git/gitconfig > $(GITCONFIG)
	@echo "#####################################################################"
	@echo "Warning: Git commit/tag signing is enabled but signingKey is not set." >&2
	@echo "#####################################################################"
	@echo "Configure it manually using:" >&2
	@echo "    gpg --list-secret-keys --keyid-format=long" >&2
	@echo "    git config --global user.signingkey <YOUR_KEY_ID>" >&2

scripts:
	mkdir -p          $(BINDIR)
	$(COPY) scripts/* $(BINDIR)

server:
	$(COPY) config/bash/bashrc $(BASHRC)
	$(COPY) config/lf          $(CONFDIR)
	$(COPY) config/shell       $(CONFDIR)
	$(COPY) config/vim         $(CONFDIR)
	$(COPY) config/zsh/zshrc   $(ZSHRC)
	$(COPY) scripts/noc

arch-linux:
	sudo $(COPY) distros/arch-linux/pacman.conf /etc

directory:
	mkdir -p \
		$(BINDIR)      \
		$(BOOKDIR)     \
		$(CONFDIR)     \
		$(MUSICDIR)    \
		$(PROJDIR)     \
		$(TESTPROJDIR)

sync: $(ARCHIVE)

$(ARCHIVE):
	curl -LO https://farajli.net/archive/$@

dmenu-install: $(DMENU).tar.gz
dwm-install: $(DWM).tar.gz
slstatus-install: $(SLSTATUS).tar.gz
st-install: $(ST).tar.gz
font1-install: $(FONT1).tar.gz
font2-install: $(FONT2).tar.gz

dmenu-install dwm-install slstatus-install st-install:
	tar xf $<
	PREFIX=~/.local make -C $$(basename $< .tar.gz) install

font1-install font2-install:
	tar xf $<
	$(COPY) $$(basename $< .tar.gz) $(FONTDIR)
	fc-cache

check:
	@./dep.sh

fullcheck:
	@./dep.sh --optional

dist: clean
	mkdir -p slcf/
	cp -R config distros scripts dep.sh Makefile README slcf/
	tar -czf slcf.tar.gz slcf/
	rm -rf slcf/

clean:
	rm -rf slcf/ slcf.tar.gz $(ARCHIVE) $(FONTS) $(SOFTWARE)

.PHONY: all arch-linux check clean config desktop directory dist    \
	dmenu-install dwm-install font1-install font2-install fonts \
	full fullcheck git scripts server slstatus-install st-install sync