From 2f8588f299e9aa3a797d5848ee5a4d78dd4dca82 Mon Sep 17 00:00:00 2001
From: Salt <rehashedsalt@cock.li>
Date: Wed, 2 Dec 2020 21:00:00 -0600
Subject: [PATCH] Hopefully this all just works

---
 gentoostrap.sh | 50 ++++++++++++++++++++++++++++++++++++++++++++++++--
 1 file changed, 48 insertions(+), 2 deletions(-)

diff --git a/gentoostrap.sh b/gentoostrap.sh
index 4abbc5f..f6541d4 100755
--- a/gentoostrap.sh
+++ b/gentoostrap.sh
@@ -132,13 +132,15 @@ build-gentoo() {
 	CXXFLAGS="\${COMMON_FLAGS}"
 	FEATURES="-network-sandbox"
 	GENTOO_MIRRORS="http://distfiles.gentoo.org"
+	GRUB_PLATFORMS="efi-64"
 	MAKEOPTS="-j$(nproc)"
-	USE="systemd -elogind -test"
+	USE="networkmanager systemd -elogind -test"
 	EOF
 	# This is required on >=17.1 to unroll some circular dependencies
 	cat <<-EOF > "$_optdest/etc/portage/package.use/gentoostrap"
 	# These solve circular dependency issues
 	dev-lang/python -bluetooth -sqlite
+	net-misc/networkmanager dhclient
 	sys-libs/ncurses -gpm
 	EOF
 	# Configure default ebuild repositories
@@ -150,6 +152,10 @@ build-gentoo() {
 	nameserver 8.8.8.8
 	nameserver 8.8.4.4
 	EOF
+	# Hostname
+	echo "$(hostname -s)" > "$_optdest/etc/conf.d/hostname"
+	# hosts
+	echo "127.0.0.1 $(hostname -s)" > "$_optdest/etc/hosts"
 	# Timezone
 	cp /etc/timezone "$_optdest/etc/timezone"
 	# Locale
@@ -157,6 +163,14 @@ build-gentoo() {
 	en_US ISO-8859-1
 	en_US.UTF-8 UTF-8
 	EOF
+	# fstab
+	[ -f "$_optdest/etc/fstab" ] || cat <<-EOF > "$_optdest/etc/fstab"
+	# fstab - Filesystem table
+	# See fstab(5) for syntax and configuration information
+	# Example:
+	#LABEL=gentoo			/		ext4	defaults,noatime,errors=remount-ro		0	1
+	EOF
+	"${EDITOR:-vim}" "$_optdest/etc/fstab"
 
 	# Now we need to pivot into a chroot and finish configuration natively
 	# Buuuut... since we're using systemd, we get to just spawn a systemd-nspawn container
@@ -194,7 +208,39 @@ build-gentoo-chroot() {
 	env-update
 	. /etc/profile
 
-	# Build a kernel
+	# Extra packages
+	emerge --jobs --quiet-build y \
+		sys-fs/{e2fs,xfs}progs \
+		sys-process/cronie
+
+	# Unnghhh... COLONEL...
+	# Dude distribution kernels are awesome
+	emerge --jobs --quiet-build y sys-kernel/installkernel-gentoo sys-kernel/linux-firmware
+	emerge --jobs --quiet-build y sys-kernel/gentoo-kernel
+	# Rebuilding modules shouldn't be necessary since the kernel was our last step
+	#emerge --jobs --quiet-build y @module-rebuild
+
+	# Install the bootloader
+	emerge --jobs --quiet-build y sys-boot/grub:2
+	mkdir -p /boot/efi
+	chmod 0700 /boot/efi
+
+	# We've made it this far and now the user has to do just a liiiiiitle bit of configuration
+	clear
+	cat <<-EOF
+	Initial system configuration is complete. There are now just a few tasks left:
+	* Mount the ESP under /boot/efi
+	* Install and configure grub
+	* Set a root password
+	* Create a normal user
+	* Reboot and pray
+
+	Other things you may want to do:
+	* Change the system hostname
+
+	Dumping to a shell now. Have fun!
+	EOF
+	exec bash
 }
 
 # Main