From 6b5a1635659e158e71c3ef319f0cb191bf965093 Mon Sep 17 00:00:00 2001
From: =?utf8?q?Paul=20H=C3=A4nsch?= <paul@plutz.net>
Date: Wed, 20 Jun 2018 22:24:39 +0200
Subject: [PATCH] Modular config

---
 Makefile  | 47 +++++++++++++++++++++++++++++++++++++++++++++++
 config.mk | 22 ++++++++++++++++++++++
 2 files changed, 69 insertions(+)
 create mode 100644 Makefile
 create mode 100644 config.mk

diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..a80a8a7
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,47 @@
+.FORCE:
+
+USER := user
+PASS := user
+GROUPS := sudo
+
+ARCH := amd64
+CONFIG := config_base/
+
+PACKAGES := apt bilibop-lockfs btrfs-tools busybox-static bzip2 ca-certificates cron deborphan extlinux gzip htop ifupdown init iputils-ping irqbalance isc-dhcp-client less live-boot live-boot-initramfs-tools make man-db nbd-client net-tools nmap ntpdate openssh-client openssh-server p7zip-full pciutils rsync squashfs-tools sshfs sudo systemd unace unrar-free unzip vim wget wireless-tools wpasupplicant xz-utils zip
+
+Include *.mk
+
+stretch_%_root/bin/sh:
+	btrfs subvolume create "$(subst bin/sh,,$@)" || mkdir "$(subst bin/sh,,$@)"
+	chmod 755 "$(subst bin/sh,,$@)"
+	debootstrap --arch=${ARCH} --variant=minbase stretch "$(subst bin/sh,,$@)"
+
+stretch_%_root/: stretch_%_root/bin/sh ${CONFIG} .FORCE
+	for tree in ${CONFIG}; do for file in apt default timezone; do cp -av "$$tree/etc/$$file" "$@/etc/" || true; done; done
+	chroot "$@" ln -sf /bin/true /usr/local/sbin/invoke-rc.d
+	chroot "$@" sh -c 'apt-mark showmanual |xargs apt-mark auto || true'
+	chroot "$@" apt-get update
+	chroot "$@" umount /proc /dev || true
+	chroot "$@" mount -t devtmpfs udev /dev
+	chroot "$@" mount -t proc proc /proc
+	chroot "$@" apt-get --yes install ${PACKAGES}
+	chroot "$@" apt-get --yes --auto-remove purge
+	chroot "$@" apt-get --yes --auto-remove upgrade
+	chroot "$@" rm /usr/local/sbin/invoke-rc.d
+	chroot "$@" umount /proc /dev
+	chroot "$@" apt-get clean
+	touch "$@"
+
+stretch_%_config/: stretch_%_root/ ${CONFIG} .FORCE
+	btrfs subvolume delete "$@" || rm -r "$@" || true
+	btrfs subvolume snapshot "$<" "$@" || cp -rlv "$<" "$@"
+	cp -av $(addsuffix /*, ${CONFIG}) "$@"
+	chroot "$@" locale-gen
+	chroot "$@" update-locale
+	chroot "$@" useradd -M -p "$$(printf %s\\n '${PASS}' |mkpasswd -m sha-256 -s)" '${USER}'
+	for g in ${GROUPS}; do chroot "$@" adduser '${USER}' "$$g"; done
+	touch "$@"
+
+stretch_%.squashfs: stretch_%_config/
+	rm "$@" || true
+	mksquashfs "$<" "$@" -comp xz
diff --git a/config.mk b/config.mk
new file mode 100644
index 0000000..41ad919
--- /dev/null
+++ b/config.mk
@@ -0,0 +1,22 @@
+USER := user
+PASS := user
+GROUPS := sudo
+
+ARCH := amd64
+CONFIG := config_base/
+
+## Kernel Package is not in defaults
+PACKAGES := ${PACKAGES} linux-image-amd64
+# PACKAGES := ${PACKAGES} linux-image-686
+
+## Overall XFCE Desktop
+PACKAGES := ${PACKAGES} alsa-utils ark blueman breeze-icon-theme chromium cryptsetup cups-client dosfstools dvd+rw-tools dvdauthor eject exfat-fuse exfat-utils file firmware-linux-free gnome-keyring gparted gtk3-engines-breeze gvfs-backends gvfs-fuse gwenview k3b k3b-i18n kbd kde-l10n-de kde-spectacle kde-style-breeze kde-style-breeze-qt4 leafpad libgl1-mesa-dri locales lvm2 mdadm mesa-utils ntfs-3g okular pavucontrol plymouth plymouth-themes policykit-1 policykit-1-gnome pulseaudio pulseaudio-module-bluetooth recordmydesktop thunar-volman va-driver-all vdpau-driver-all vlc x11-xserver-utils x264 xauth xdotool xfce4 xfce4-terminal xfce4-whiskermenu-plugin xscreensaver xserver-xorg-core xserver-xorg-input-all xserver-xorg-input-wacom xserver-xorg-video-all zenity
+
+## Common heavy weight desktop applications
+PACKAGES := ${PACKAGES} audacity blender clementine firefox-esr firefox-esr-l10n-de frei0r-plugins gimp hunspell hunspell-de-de hyphen-de inkscape kdenlive krita krita-l10n libreoffice libreoffice-gnome libreoffice-gtk libreoffice-l10n-de libreoffice-pdfimport libreoffice-style-breeze lightning marble thunderbird thunderbird-l10n-de
+
+## Public Terminal / Personal Login
+PACKAGES := ${PACKAGES} nodm
+# PACKAGES := ${PACKAGES} lxdm network-manager network-manager-gnome 
+
+PACKAGES := ${PACKAGES} clementine pulseaudio-equalizer mpd fookebox davfs2
-- 
2.39.5