-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
62 lines (45 loc) · 2.25 KB
/
Copy pathMakefile
File metadata and controls
62 lines (45 loc) · 2.25 KB
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
TARGETUSER ?= ephemeral
PREFIX ?= /usr/local
CONTROLSCRIPT := $(PREFIX)/sbin/$(TARGETUSER)-home-overlay
SERVICENAME := $(TARGETUSER)-home-overlay.service
BUILDTARGETS := build/bin/$(TARGETUSER)-clear build/sbin/$(TARGETUSER)-home-overlay build/share/home-overlay/$(TARGETUSER)-home-overlay.service
INSTALLTARGETS := $(PREFIX)/bin/$(TARGETUSER)-clear $(CONTROLSCRIPT) $(PREFIX)/share/home-overlay/$(TARGETUSER)-home-overlay.service
build: build/bin/$(TARGETUSER)-clear build/sbin/$(TARGETUSER)-home-overlay build/share/home-overlay/$(TARGETUSER)-home-overlay.service
check:
-@command -v install >/dev/null || { echo "Missing command: install"; false; }
-@[ -e /usr/sbin/adduser ] || { echo "Missing command: adduser"; false; }
-@command -v sudo >/dev/null || { echo "Missing command: sudo"; false; }
-@command -v pgrep >/dev/null || echo "Missing recommended command: pgrep"
-@command -v notify-send >/dev/null || echo "Missing recommended command: notify-send"
clean:
rm -rf build
build/bin build/sbin build/share/home-overlay:
mkdir -p $@
build/bin/$(TARGETUSER)-clear: clear | build/bin
cp $< $@
sed -i "s/#TARGETUSER#/$(TARGETUSER)/" $@
build/sbin/$(TARGETUSER)-home-overlay: home-overlay | build/sbin
cp $< $@
sed -i "s/#TARGETUSER#/$(TARGETUSER)/" $@
build/share/home-overlay/$(TARGETUSER)-home-overlay.service: home-overlay.service | build/share/home-overlay
cp $< $@
sed -i "s,#CONTROLSCRIPT#,$(CONTROLSCRIPT)," $@
$(PREFIX)/bin/$(TARGETUSER)-clear: build/bin/$(TARGETUSER)-clear
install -D -m 0755 $< $@
$(PREFIX)/sbin/$(TARGETUSER)-home-overlay: build/sbin/$(TARGETUSER)-home-overlay
install -D -m 0755 $< $@
$(PREFIX)/share/home-overlay/$(TARGETUSER)-home-overlay.service: build/share/home-overlay/$(TARGETUSER)-home-overlay.service
install -D -m 0644 $< $@
install: check user $(INSTALLTARGETS)
systemctl link $(PREFIX)/share/home-overlay/$(SERVICENAME) \
&& systemctl enable $(SERVICENAME)
user:
@id $(TARGETUSER) >/dev/null 2>&1 && { \
echo "User $(TARGETUSER) already exists"; \
} || { \
echo "Creating user $(TARGETUSER)"; \
adduser --disabled-login $(TARGETUSER); \
}
sudo-snippet:
@echo "$(USER) ALL = (ALL) NOPASSWD: /bin/systemctl start $(SERVICENAME), /bin/systemctl stop $(SERVICENAME)"
.PHONY: build check clean install user