72 lines
2.0 KiB
Makefile
72 lines
2.0 KiB
Makefile
# Copyright (C) 2023 Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
|
|
#
|
|
# This file is free software; you can redistribute it and/or modify it
|
|
# under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation; either version 3 of the License, or (at
|
|
# your option) any later version.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this file. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
dist_pkgdata_DATA = mumble-vm.img
|
|
|
|
CLEANFILES = \
|
|
first-boot.sh \
|
|
guix-commit.txt \
|
|
index.html \
|
|
mumble-vm.img \
|
|
mumble-vm-machine.scm \
|
|
mumble-vm-system.scm \
|
|
wireguard-post-up.sh
|
|
|
|
# We want to only update the image when guix commit changes. The trick
|
|
# to make that work is to only create or update a file when the revision
|
|
# changes.
|
|
guix-commit.txt: Makefile
|
|
if [ ! -f $@ ] ; then \
|
|
guix describe | grep '^ commit:' | awk '{print $$2}' > $@ ; \
|
|
elif [ "$(cat $@)" != \
|
|
"$(guix describe | \
|
|
grep '^ commit:' | awk '{print $$2}')" ] ; then \
|
|
guix describe | grep '^ commit:' | awk '{print $$2}' > $@ ; \
|
|
fi
|
|
|
|
%.html: %.html.tmpl guix-commit.txt Makefile
|
|
sed 's#DOMAIN#$(DOMAIN)#g' $< > $@
|
|
|
|
%.scm: %.scm.tmpl guix-commit.txt Makefile
|
|
sed \
|
|
"s#DOMAIN#$(DOMAIN)#g ; \
|
|
s#LETSENCRYPT_EMAIL#$(LETSENCRYPT_EMAIL)#g ; \
|
|
s#VM_IPV4_ADDRESS#$(VM_IPV4_ADDRESS)#g ; \
|
|
s#VM_IPV6_ADDRESS#$(VM_IPV6_ADDRESS)#g ; \
|
|
s#VM_IPV4_GATEWAY#$(VM_IPV4_GATEWAY)#g ; \
|
|
s#VM_SSH_PUB_KEY#$(VM_SSH_PUB_KEY)#g" $< > $@
|
|
|
|
%.sh: %.sh.tmpl guix-commit.txt Makefile
|
|
sed \
|
|
"s#DOMAIN#$(DOMAIN)#g ; \
|
|
s#LETSENCRYPT_EMAIL#$(LETSENCRYPT_EMAIL)#g" $< > $@
|
|
chmod +x $@
|
|
|
|
IMAGE_SOURCE = \
|
|
first-boot.sh \
|
|
guix-commit.txt \
|
|
index.html \
|
|
mumble-vm-machine.scm \
|
|
mumble-vm-system.scm \
|
|
id_ed25519.pub \
|
|
Makefile \
|
|
signing-key.pub \
|
|
wireguard-post-up.sh
|
|
|
|
mumble-vm.img: $(IMAGE_SOURCE)
|
|
sudo install \
|
|
`guix system image \
|
|
--image-type=mbr-raw \
|
|
--image-size=6G mumble-vm-system.scm` \
|
|
$@
|
|
|
|
deploy: $(IMAGE_SOURCE)
|
|
guix deploy -L . mumble-vm-machine.scm
|