Compare commits
	
		
			23 Commits
		
	
	
		
			cda85111e7
			...
			pre-instal
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						
						
							
						
						e513fe2c60
	
				 | 
					
					
						|||
| 
						
						
							
						
						8a78dd7f96
	
				 | 
					
					
						|||
| 
						
						
							
						
						bee95926b7
	
				 | 
					
					
						|||
| 
						
						
							
						
						67763d1b39
	
				 | 
					
					
						|||
| 
						
						
							
						
						203a09eb05
	
				 | 
					
					
						|||
| 
						
						
							
						
						5b4a77f615
	
				 | 
					
					
						|||
| 
						
						
							
						
						939359b94e
	
				 | 
					
					
						|||
| 
						
						
							
						
						12beaaf5d2
	
				 | 
					
					
						|||
| 
						
						
							
						
						211a0413f5
	
				 | 
					
					
						|||
| 
						
						
							
						
						7ba4a4f60f
	
				 | 
					
					
						|||
| 
						
						
							
						
						328b02a294
	
				 | 
					
					
						|||
| 
						
						
							
						
						a36854c208
	
				 | 
					
					
						|||
| 
						
						
							
						
						6268d684c6
	
				 | 
					
					
						|||
| 
						
						
							
						
						ee48fb7560
	
				 | 
					
					
						|||
| 
						
						
							
						
						bba89f8185
	
				 | 
					
					
						|||
| 
						
						
							
						
						802fa4f3c8
	
				 | 
					
					
						|||
| 
						
						
							
						
						26f59f4a91
	
				 | 
					
					
						|||
| 
						
						
							
						
						ae6fc22074
	
				 | 
					
					
						|||
| 
						
						
							
						
						7244296734
	
				 | 
					
					
						|||
| 
						
						
							
						
						817653120c
	
				 | 
					
					
						|||
| 
						
						
							
						
						33435e5903
	
				 | 
					
					
						|||
| 
						
						
							
						
						62861d8c7b
	
				 | 
					
					
						|||
| 
						
						
							
						
						7442994d18
	
				 | 
					
					
						
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@@ -1,2 +1,3 @@
 | 
				
			|||||||
archive.sh
 | 
					archive.sh
 | 
				
			||||||
system.conf
 | 
					system.conf
 | 
				
			||||||
 | 
					*kate-swp
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										89
									
								
								base-debian.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										89
									
								
								base-debian.sh
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,89 @@
 | 
				
			|||||||
 | 
					#!/bin/bash
 | 
				
			||||||
 | 
					set -euo pipefail
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					BASEDIR="$(dirname "${0}" | sed "s|^\.|${PWD}|")"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					source \
 | 
				
			||||||
 | 
						/etc/os-release
 | 
				
			||||||
 | 
					source \
 | 
				
			||||||
 | 
						"${BASEDIR}/system.conf"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [[ "${1}" == '-1' ]]; then
 | 
				
			||||||
 | 
						packages=(\
 | 
				
			||||||
 | 
					console-setup \
 | 
				
			||||||
 | 
					cryptsetup \
 | 
				
			||||||
 | 
					curl \
 | 
				
			||||||
 | 
					dosfstools \
 | 
				
			||||||
 | 
					dpkg-dev \
 | 
				
			||||||
 | 
					efibootmgr \
 | 
				
			||||||
 | 
					ethtool \
 | 
				
			||||||
 | 
					firmware-{ast,atheros,bnx{2,2x},brcm80211,iwlwifi,libertas,linux,realtek,zd1211} \
 | 
				
			||||||
 | 
					flatpak \
 | 
				
			||||||
 | 
					keyboard-configuration \
 | 
				
			||||||
 | 
					linux-{headers,image}-amd64 \
 | 
				
			||||||
 | 
					locales \
 | 
				
			||||||
 | 
					nano \
 | 
				
			||||||
 | 
					network-manager \
 | 
				
			||||||
 | 
					openssh-{client,server} \
 | 
				
			||||||
 | 
					popularity-contest \
 | 
				
			||||||
 | 
					printer-driver-all \
 | 
				
			||||||
 | 
					systemd-timesyncd \
 | 
				
			||||||
 | 
					tasksel \
 | 
				
			||||||
 | 
					zfs-initramfs \
 | 
				
			||||||
 | 
					zstd\
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						include="--include=${packages[0]}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for ((i=1;i<${#packages[@]};i++)); do
 | 
				
			||||||
 | 
							include+=" --include=${packages[${i}]}"
 | 
				
			||||||
 | 
						done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						mmdebstrap \
 | 
				
			||||||
 | 
							--skip=check/empty \
 | 
				
			||||||
 | 
							--components=main,non-free-firmware,contrib \
 | 
				
			||||||
 | 
							--mode=root \
 | 
				
			||||||
 | 
							--format=directory \
 | 
				
			||||||
 | 
							${include} \
 | 
				
			||||||
 | 
							"${VERSION_CODENAME}" \
 | 
				
			||||||
 | 
							/mnt
 | 
				
			||||||
 | 
					elif [[ "${1}" == '-2' ]]; then
 | 
				
			||||||
 | 
						NETWORK_INTERFACE=($(ip -br addr show | sed 's| .*$||g' | grep -v '^lo' | grep -v 'tailscale' | grep -v '^wg'))
 | 
				
			||||||
 | 
						shopt -s extglob
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for ((i = 0; i < ${#NETWORK_INTERFACE[@]}; i++)); do
 | 
				
			||||||
 | 
							cat << EOF | tee /mnt/etc/network/interfaces.d/${NETWORK_INTERFACE[$i]} &> /dev/null
 | 
				
			||||||
 | 
					allow-hotplug	${NETWORK_INTERFACE[$i]}
 | 
				
			||||||
 | 
					iface		${NETWORK_INTERFACE[$i]}	inet	dhcp
 | 
				
			||||||
 | 
					EOF
 | 
				
			||||||
 | 
						done
 | 
				
			||||||
 | 
					elif [[ "${1}" == '-3' ]]; then
 | 
				
			||||||
 | 
						cat << EOF | tee /mnt/etc/apt/sources.list.d/${VERSION_CODENAME}.sources &> /dev/null
 | 
				
			||||||
 | 
					# ${VERSION_CODENAME^}
 | 
				
			||||||
 | 
					Enabled:		yes
 | 
				
			||||||
 | 
					Types:			deb deb-src
 | 
				
			||||||
 | 
					URIs:			http://deb.debian.org/debian/
 | 
				
			||||||
 | 
					Suites:			${VERSION_CODENAME}
 | 
				
			||||||
 | 
					Components:		main non-free-firmware contrib
 | 
				
			||||||
 | 
					Signed-By:		/usr/share/keyrings/debian-archive-keyring.gpg
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# ${VERSION_CODENAME^} Security
 | 
				
			||||||
 | 
					Enabled:		yes
 | 
				
			||||||
 | 
					Types:			deb deb-src
 | 
				
			||||||
 | 
					URIs:			http://deb.debian.org/debian-security/
 | 
				
			||||||
 | 
					Suites:			${VERSION_CODENAME}-security
 | 
				
			||||||
 | 
					Components:		main non-free-firmware contrib
 | 
				
			||||||
 | 
					Signed-By:		/usr/share/keyrings/debian-archive-keyring.gpg
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# ${VERSION_CODENAME^} Updates
 | 
				
			||||||
 | 
					Enabled:		yes
 | 
				
			||||||
 | 
					Types:			deb deb-src
 | 
				
			||||||
 | 
					URIs:			http://deb.debian.org/debian/
 | 
				
			||||||
 | 
					Suites:			${VERSION_CODENAME}-updates
 | 
				
			||||||
 | 
					Components:		main non-free-firmware contrib
 | 
				
			||||||
 | 
					Signed-By:		/usr/share/keyrings/debian-archive-keyring.gpg
 | 
				
			||||||
 | 
					EOF
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						rm /mnt/etc/apt/sources.list
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
							
								
								
									
										105
									
								
								base-elementary.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										105
									
								
								base-elementary.sh
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,105 @@
 | 
				
			|||||||
 | 
					#!/bin/bash
 | 
				
			||||||
 | 
					set -euo pipefail
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					BASEDIR="$(dirname "${0}" | sed "s|^\.|${PWD}|")"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					source \
 | 
				
			||||||
 | 
						/etc/os-release
 | 
				
			||||||
 | 
					source \
 | 
				
			||||||
 | 
						"${BASEDIR}/system.conf"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [[ "${1}" == '-1' ]]; then
 | 
				
			||||||
 | 
						packages=(\
 | 
				
			||||||
 | 
					console-setup \
 | 
				
			||||||
 | 
					cryptsetup \
 | 
				
			||||||
 | 
					curl \
 | 
				
			||||||
 | 
					dosfstools \
 | 
				
			||||||
 | 
					dpkg-dev \
 | 
				
			||||||
 | 
					efibootmgr \
 | 
				
			||||||
 | 
					ethtool \
 | 
				
			||||||
 | 
					flatpak \
 | 
				
			||||||
 | 
					keyboard-configuration \
 | 
				
			||||||
 | 
					linux-generic \
 | 
				
			||||||
 | 
					locales \
 | 
				
			||||||
 | 
					nano \
 | 
				
			||||||
 | 
					network-manager \
 | 
				
			||||||
 | 
					openssh-{client,server} \
 | 
				
			||||||
 | 
					popularity-contest \
 | 
				
			||||||
 | 
					zfs-initramfs \
 | 
				
			||||||
 | 
					zstd\
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						include="--include=${packages[0]}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for ((i=1;i<${#packages[@]};i++)); do
 | 
				
			||||||
 | 
							include+=" --include=${packages[${i}]}"
 | 
				
			||||||
 | 
						done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						mmdebstrap \
 | 
				
			||||||
 | 
							--skip=check/empty \
 | 
				
			||||||
 | 
							--components=main,restricted,universe,multiverse \
 | 
				
			||||||
 | 
							--mode=root \
 | 
				
			||||||
 | 
							--format=directory \
 | 
				
			||||||
 | 
							${include} \
 | 
				
			||||||
 | 
							"${UBUNTU_VERSION_CODENAME}" \
 | 
				
			||||||
 | 
							/mnt
 | 
				
			||||||
 | 
					elif [[ "${1}" == '-2' ]]; then
 | 
				
			||||||
 | 
						cat <<EOF >/mnt/etc/apt/sources.list.d/${UBUNTU_VERSION_CODENAME}.sources
 | 
				
			||||||
 | 
					# ${UBUNTU_VERSION_CODENAME^}
 | 
				
			||||||
 | 
					Enabled:		yes
 | 
				
			||||||
 | 
					Types:			deb deb-src
 | 
				
			||||||
 | 
					URIs:			http://archive.ubuntu.com/ubuntu/
 | 
				
			||||||
 | 
					Suites:			${UBUNTU_VERSION_CODENAME}
 | 
				
			||||||
 | 
					Components:		main restricted universe multiverse
 | 
				
			||||||
 | 
					Signed-By:		/usr/share/keyrings/ubuntu-archive-keyring.gpg
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# ${UBUNTU_VERSION_CODENAME^} Security
 | 
				
			||||||
 | 
					Enabled:		yes
 | 
				
			||||||
 | 
					Types:			deb deb-src
 | 
				
			||||||
 | 
					URIs:			http://security.ubuntu.com/ubuntu/
 | 
				
			||||||
 | 
					Suites:			${UBUNTU_VERSION_CODENAME}-security
 | 
				
			||||||
 | 
					Components:		main restricted universe multiverse
 | 
				
			||||||
 | 
					Signed-By:		/usr/share/keyrings/ubuntu-archive-keyring.gpg
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# ${UBUNTU_VERSION_CODENAME^} Updates
 | 
				
			||||||
 | 
					Enabled:		yes
 | 
				
			||||||
 | 
					Types:			deb deb-src
 | 
				
			||||||
 | 
					URIs:			http://archive.ubuntu.com/ubuntu/
 | 
				
			||||||
 | 
					Suites:			${UBUNTU_VERSION_CODENAME}-updates
 | 
				
			||||||
 | 
					Components:		main restricted universe multiverse
 | 
				
			||||||
 | 
					Signed-By:		/usr/share/keyrings/ubuntu-archive-keyring.gpg
 | 
				
			||||||
 | 
					EOF
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						cat <<EOF >/mnt/etc/apt/sources.list.d/elementary.sources
 | 
				
			||||||
 | 
					Enabled:		yes
 | 
				
			||||||
 | 
					Types:			deb deb-src
 | 
				
			||||||
 | 
					URIs:			https://ppa.launchpadcontent.net/elementary-os/stable/ubuntu
 | 
				
			||||||
 | 
					Suites:			${UBUNTU_VERSION_CODENAME}
 | 
				
			||||||
 | 
					Components:		main
 | 
				
			||||||
 | 
					Signed-By:		/etc/apt/trusted.gpg.d/elementary.key.asc
 | 
				
			||||||
 | 
					EOF
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						cat <<EOF >/mnt/etc/apt/sources.list.d/patches.sources
 | 
				
			||||||
 | 
					Enabled:		yes
 | 
				
			||||||
 | 
					Types:			deb deb-src
 | 
				
			||||||
 | 
					URIs:			https://ppa.launchpadcontent.net/elementary-os/os-patches/ubuntu
 | 
				
			||||||
 | 
					Suites:			${UBUNTU_VERSION_CODENAME}
 | 
				
			||||||
 | 
					Components:		main
 | 
				
			||||||
 | 
					Signed-By:		/etc/apt/trusted.gpg.d/patches.key.asc
 | 
				
			||||||
 | 
					EOF
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						rm /mnt/etc/apt/sources.list
 | 
				
			||||||
 | 
					elif [[ "${1}" == '-3' ]]; then
 | 
				
			||||||
 | 
						rsync -pogAXtlHrDx \
 | 
				
			||||||
 | 
							/etc/skel \
 | 
				
			||||||
 | 
								/mnt/etc
 | 
				
			||||||
 | 
					elif [[ "${1}" == '-4' ]]; then
 | 
				
			||||||
 | 
						cp \
 | 
				
			||||||
 | 
							/etc/os-release \
 | 
				
			||||||
 | 
							/mnt/etc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						cp \
 | 
				
			||||||
 | 
							/etc/apt/trusted.gpg.d/{elementary,patches}.key.asc \
 | 
				
			||||||
 | 
							/mnt/etc/apt/trusted.gpg.d/
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
							
								
								
									
										36
									
								
								base-fedora.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										36
									
								
								base-fedora.sh
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,36 @@
 | 
				
			|||||||
 | 
					#!/bin/bash
 | 
				
			||||||
 | 
					set -euo pipefail
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					BASEDIR="$(dirname "${0}" | sed "s|^\.|${PWD}|")"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					source \
 | 
				
			||||||
 | 
						/etc/os-release
 | 
				
			||||||
 | 
					source \
 | 
				
			||||||
 | 
						"${BASEDIR}/system.conf"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [[ "${1}" == '-1' ]]; then
 | 
				
			||||||
 | 
						mkdir -p /run/install
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if [[ "${VERSION_ID}" -lt '41' ]]; then
 | 
				
			||||||
 | 
							mount /dev/mapper/live-base /run/install
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
							mount /dev/live-base /run/install
 | 
				
			||||||
 | 
						fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						rsync -pogAXtlHrDx \
 | 
				
			||||||
 | 
							--stats \
 | 
				
			||||||
 | 
							--exclude=/boot/efi/* \
 | 
				
			||||||
 | 
							--exclude=/etc/machine-id \
 | 
				
			||||||
 | 
							--info=progress2 \
 | 
				
			||||||
 | 
							/run/install/ /mnt
 | 
				
			||||||
 | 
					elif [[ "${1}" == '-2' ]]; then
 | 
				
			||||||
 | 
						mv /mnt/etc/resolv.conf \
 | 
				
			||||||
 | 
							/mnt/etc/resolv.conf.orig
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						cp -L \
 | 
				
			||||||
 | 
							/etc/resolv.conf \
 | 
				
			||||||
 | 
							/mnt/etc
 | 
				
			||||||
 | 
					elif [[ "${1}" == '-3' ]]; then
 | 
				
			||||||
 | 
						#
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
							
								
								
									
										48
									
								
								install.sh
									
									
									
									
									
								
							
							
						
						
									
										48
									
								
								install.sh
									
									
									
									
									
								
							@@ -71,47 +71,7 @@ EOF
 | 
				
			|||||||
	fi
 | 
						fi
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if [[ "${ID}" == 'elementary' ]]; then
 | 
					if [[ "${ID}" == 'fedora' ]]; then
 | 
				
			||||||
	apt \
 | 
					 | 
				
			||||||
		install \
 | 
					 | 
				
			||||||
		--yes \
 | 
					 | 
				
			||||||
		--no-install-recommends \
 | 
					 | 
				
			||||||
		console-setup \
 | 
					 | 
				
			||||||
		cryptsetup \
 | 
					 | 
				
			||||||
		curl \
 | 
					 | 
				
			||||||
		dpkg-dev \
 | 
					 | 
				
			||||||
		efibootmgr \
 | 
					 | 
				
			||||||
		ethtool \
 | 
					 | 
				
			||||||
		flatpak \
 | 
					 | 
				
			||||||
		keyboard-configuration \
 | 
					 | 
				
			||||||
		linux-generic \
 | 
					 | 
				
			||||||
		locales \
 | 
					 | 
				
			||||||
		nano \
 | 
					 | 
				
			||||||
		network-manager \
 | 
					 | 
				
			||||||
		openssh-{client,server} \
 | 
					 | 
				
			||||||
		popularity-contest
 | 
					 | 
				
			||||||
elif [[ "${ID}" == 'debian' ]]; then
 | 
					 | 
				
			||||||
	apt \
 | 
					 | 
				
			||||||
		install \
 | 
					 | 
				
			||||||
		--yes \
 | 
					 | 
				
			||||||
		console-setup \
 | 
					 | 
				
			||||||
		cryptsetup \
 | 
					 | 
				
			||||||
		curl \
 | 
					 | 
				
			||||||
		dpkg-dev \
 | 
					 | 
				
			||||||
		efibootmgr \
 | 
					 | 
				
			||||||
		ethtool \
 | 
					 | 
				
			||||||
		firmware-{ast,atheros,bnx{2,2x},brcm80211,ipw2x00,iwlwifi,libertas,linux,realtek,zd1211} \
 | 
					 | 
				
			||||||
		flatpak \
 | 
					 | 
				
			||||||
		keyboard-configuration \
 | 
					 | 
				
			||||||
		linux-{headers,image}-amd64 \
 | 
					 | 
				
			||||||
		locales \
 | 
					 | 
				
			||||||
		nano \
 | 
					 | 
				
			||||||
		network-manager \
 | 
					 | 
				
			||||||
		openssh-{client,server} \
 | 
					 | 
				
			||||||
		popularity-contest \
 | 
					 | 
				
			||||||
		printer-driver-all \
 | 
					 | 
				
			||||||
		tasksel
 | 
					 | 
				
			||||||
elif [[ "${ID}" == 'fedora' ]]; then
 | 
					 | 
				
			||||||
	if [[ "${VERSION_ID}" -lt '41' ]]; then
 | 
						if [[ "${VERSION_ID}" -lt '41' ]]; then
 | 
				
			||||||
		dnf \
 | 
							dnf \
 | 
				
			||||||
			config-manager \
 | 
								config-manager \
 | 
				
			||||||
@@ -168,12 +128,6 @@ EOF
 | 
				
			|||||||
		tzdata \
 | 
							tzdata \
 | 
				
			||||||
		keyboard-configuration \
 | 
							keyboard-configuration \
 | 
				
			||||||
		console-setup
 | 
							console-setup
 | 
				
			||||||
 | 
					 | 
				
			||||||
	apt install \
 | 
					 | 
				
			||||||
		--yes \
 | 
					 | 
				
			||||||
		dosfstools \
 | 
					 | 
				
			||||||
		systemd-timesyncd \
 | 
					 | 
				
			||||||
		zfs-initramfs
 | 
					 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if [[ "${ID}" == 'debian' ]]; then
 | 
					if [[ "${ID}" == 'debian' ]]; then
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										8
									
								
								menu.sh
									
									
									
									
									
								
							
							
						
						
									
										8
									
								
								menu.sh
									
									
									
									
									
								
							@@ -26,10 +26,10 @@ while [[ ! "${OPTION}" == 'Exit' ]]; do
 | 
				
			|||||||
#################
 | 
					#################
 | 
				
			||||||
 | 
					
 | 
				
			||||||
EOF
 | 
					EOF
 | 
				
			||||||
    select OPTION in 'List' 'Configure' 'Partition' 'Install' 'WiFi Setup' 'Post Install' 'Finalize' 'Exit'
 | 
					    select OPTION in 'List' 'Configure' 'Pre Install' 'Install' 'WiFi Setup' 'Post Install' 'Finalize' 'Exit'
 | 
				
			||||||
    do
 | 
					    do
 | 
				
			||||||
      case "${OPTION}" in
 | 
					      case "${OPTION}" in
 | 
				
			||||||
        'List'|'Configure'|'Partition'|'Install'|'WiFi Setup'|'Post Install'|'Finalize'|'Exit')
 | 
					        'List'|'Configure'|'Pre Install'|'Install'|'WiFi Setup'|'Post Install'|'Finalize'|'Exit')
 | 
				
			||||||
          break
 | 
					          break
 | 
				
			||||||
          ;;
 | 
					          ;;
 | 
				
			||||||
        *)
 | 
					        *)
 | 
				
			||||||
@@ -44,8 +44,8 @@ EOF
 | 
				
			|||||||
    "${BASEDIR}/list.sh"
 | 
					    "${BASEDIR}/list.sh"
 | 
				
			||||||
  elif [[ "${OPTION}" == 'Configure' ]]; then
 | 
					  elif [[ "${OPTION}" == 'Configure' ]]; then
 | 
				
			||||||
    "${BASEDIR}/configure.sh"
 | 
					    "${BASEDIR}/configure.sh"
 | 
				
			||||||
  elif [[ "${OPTION}" == 'Partition' ]]; then
 | 
					  elif [[ "${OPTION}" == 'Pre Install' ]]; then
 | 
				
			||||||
    "${BASEDIR}/partition.sh"
 | 
					    "${BASEDIR}/pre-inst.sh"
 | 
				
			||||||
  elif [[ "${OPTION}" == 'Install' ]]; then
 | 
					  elif [[ "${OPTION}" == 'Install' ]]; then
 | 
				
			||||||
    "${BASEDIR}/install.sh"
 | 
					    "${BASEDIR}/install.sh"
 | 
				
			||||||
  elif [[ "${OPTION}" == 'WiFi Setup' ]]; then
 | 
					  elif [[ "${OPTION}" == 'WiFi Setup' ]]; then
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										274
									
								
								mkfs.zfs.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										274
									
								
								mkfs.zfs.sh
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,274 @@
 | 
				
			|||||||
 | 
					#!/bin/bash
 | 
				
			||||||
 | 
					set -euo pipefail
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					BASEDIR="$(dirname "${0}" | sed "s|^\.|${PWD}|")"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					source \
 | 
				
			||||||
 | 
						/etc/os-release
 | 
				
			||||||
 | 
					source \
 | 
				
			||||||
 | 
						"${BASEDIR}/system.conf"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [[ ! "${DISK}" == **/dev/disk/by-id/** ]]; then
 | 
				
			||||||
 | 
						if [[ "${DISK}" == **/dev/nvme** ]]; then
 | 
				
			||||||
 | 
							PART3='p3'
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
							PART3='3'
 | 
				
			||||||
 | 
						fi
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
						PART3='-part3'
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# if [[ ! "${*}" = *--no-part* ]]; then
 | 
				
			||||||
 | 
						if [[ "${ENCRYPTION}" == 'yes' ]]; then
 | 
				
			||||||
 | 
							ZPOOL_PASSWORD='A'
 | 
				
			||||||
 | 
							ZPOOL_PASSWORD_VERIFY='B'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							printf \
 | 
				
			||||||
 | 
								'\033[?47h\033[2J\033[H'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							while [[ ! "${ZPOOL_PASSWORD}" == "${ZPOOL_PASSWORD_VERIFY}" ]] || [[ -z "${ZPOOL_PASSWORD}" ]] || [[ "${#ZPOOL_PASSWORD}" -lt '8' ]]; do
 | 
				
			||||||
 | 
								printf \
 | 
				
			||||||
 | 
									"\nEnter a password to encrypt your root pool (minimum 8 characters):\n"
 | 
				
			||||||
 | 
								read \
 | 
				
			||||||
 | 
									-r \
 | 
				
			||||||
 | 
									-s \
 | 
				
			||||||
 | 
									ZPOOL_PASSWORD
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								printf \
 | 
				
			||||||
 | 
									"\nVerify the password to encrypt your root pool:\n"
 | 
				
			||||||
 | 
								read \
 | 
				
			||||||
 | 
									-r \
 | 
				
			||||||
 | 
									-s \
 | 
				
			||||||
 | 
									ZPOOL_PASSWORD_VERIFY
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if [[ ! "${ZPOOL_PASSWORD}" == "${ZPOOL_PASSWORD_VERIFY}" ]]; then
 | 
				
			||||||
 | 
									printf \
 | 
				
			||||||
 | 
										"ERROR:\tPasswords do not match!\n"
 | 
				
			||||||
 | 
								elif [[ -z "${ZPOOL_PASSWORD}" ]]; then
 | 
				
			||||||
 | 
									printf \
 | 
				
			||||||
 | 
										"ERROR:\tPassword is empty!\n"
 | 
				
			||||||
 | 
								elif [[ "${#ZPOOL_PASSWORD}" -lt '8' ]]; then
 | 
				
			||||||
 | 
									printf \
 | 
				
			||||||
 | 
										"ERROR:\tPassword is too short!\n"
 | 
				
			||||||
 | 
								fi
 | 
				
			||||||
 | 
							done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							printf \
 | 
				
			||||||
 | 
								'\033[?47l'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							mkdir \
 | 
				
			||||||
 | 
								-p \
 | 
				
			||||||
 | 
								/etc/zfs/keys/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							printf \
 | 
				
			||||||
 | 
								"${ZPOOL_PASSWORD}\n" | tee /etc/zfs/keys/${HOSTNAME,,}.key &> /dev/null
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							chmod \
 | 
				
			||||||
 | 
								000 \
 | 
				
			||||||
 | 
								/etc/zfs/keys/${HOSTNAME,,}.key
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							zpool create \
 | 
				
			||||||
 | 
								-o ashift=12 \
 | 
				
			||||||
 | 
								-o autotrim=on \
 | 
				
			||||||
 | 
								-o compatibility=openzfs-2.1-linux \
 | 
				
			||||||
 | 
								-O encryption=on \
 | 
				
			||||||
 | 
								-O keylocation=file:///etc/zfs/keys/${HOSTNAME,,}.key \
 | 
				
			||||||
 | 
								-O keyformat=passphrase \
 | 
				
			||||||
 | 
								-O acltype=posixacl \
 | 
				
			||||||
 | 
								-O xattr=sa \
 | 
				
			||||||
 | 
								-O dnodesize=auto \
 | 
				
			||||||
 | 
								-O compression=zstd-3 \
 | 
				
			||||||
 | 
								-O normalization=formD \
 | 
				
			||||||
 | 
								-O relatime=on \
 | 
				
			||||||
 | 
								-O canmount=off \
 | 
				
			||||||
 | 
								-O mountpoint=/ \
 | 
				
			||||||
 | 
								-R /mnt \
 | 
				
			||||||
 | 
								${HOSTNAME,,} \
 | 
				
			||||||
 | 
								${DISK}${PART3}
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
							zpool create \
 | 
				
			||||||
 | 
								-o ashift=12 \
 | 
				
			||||||
 | 
								-o autotrim=on \
 | 
				
			||||||
 | 
								-o compatibility=openzfs-2.1-linux \
 | 
				
			||||||
 | 
								-O encryption=off \
 | 
				
			||||||
 | 
								-O acltype=posixacl \
 | 
				
			||||||
 | 
								-O xattr=sa \
 | 
				
			||||||
 | 
								-O dnodesize=auto \
 | 
				
			||||||
 | 
								-O compression=zstd-3 \
 | 
				
			||||||
 | 
								-O normalization=formD \
 | 
				
			||||||
 | 
								-O relatime=on \
 | 
				
			||||||
 | 
								-O canmount=off \
 | 
				
			||||||
 | 
								-O mountpoint=/ \
 | 
				
			||||||
 | 
								-R /mnt \
 | 
				
			||||||
 | 
								${HOSTNAME,,} \
 | 
				
			||||||
 | 
								${DISK}${PART3}
 | 
				
			||||||
 | 
						fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						zfs create \
 | 
				
			||||||
 | 
							-o canmount=off \
 | 
				
			||||||
 | 
							-o mountpoint=none \
 | 
				
			||||||
 | 
							${HOSTNAME,,}/ROOT
 | 
				
			||||||
 | 
					# else
 | 
				
			||||||
 | 
					# 	zpool import \
 | 
				
			||||||
 | 
					# 		-N \
 | 
				
			||||||
 | 
					# 		-R \
 | 
				
			||||||
 | 
					# 		/mnt \
 | 
				
			||||||
 | 
					# 		${HOSTNAME,,}
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# 	zfs load-key \
 | 
				
			||||||
 | 
					# 		-r \
 | 
				
			||||||
 | 
					# 		-L prompt \
 | 
				
			||||||
 | 
					# 		${HOSTNAME,,}
 | 
				
			||||||
 | 
					# fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					zfs create \
 | 
				
			||||||
 | 
						-o canmount=noauto \
 | 
				
			||||||
 | 
						-o mountpoint=/ \
 | 
				
			||||||
 | 
						${HOSTNAME,,}/ROOT/${ID}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					zfs mount \
 | 
				
			||||||
 | 
						${HOSTNAME,,}/ROOT/${ID}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# if [[ ! "${*}" = *--no-part* ]]; then
 | 
				
			||||||
 | 
						zfs create \
 | 
				
			||||||
 | 
							${HOSTNAME,,}/home
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						zfs create \
 | 
				
			||||||
 | 
							-o mountpoint=/root \
 | 
				
			||||||
 | 
							${HOSTNAME,,}/home/root
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						chmod \
 | 
				
			||||||
 | 
							700 \
 | 
				
			||||||
 | 
							/mnt/root
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						zfs create \
 | 
				
			||||||
 | 
							-o canmount=off \
 | 
				
			||||||
 | 
							-o mountpoint=/var \
 | 
				
			||||||
 | 
							${HOSTNAME,,}/var
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						zfs create \
 | 
				
			||||||
 | 
							-o canmount=off \
 | 
				
			||||||
 | 
							${HOSTNAME,,}/var/lib
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						zfs create \
 | 
				
			||||||
 | 
							${HOSTNAME,,}/var/log
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						zfs create \
 | 
				
			||||||
 | 
							${HOSTNAME,,}/var/spool
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						zfs create \
 | 
				
			||||||
 | 
							-o com.sun:auto-snapshot=false \
 | 
				
			||||||
 | 
							${HOSTNAME,,}/var/cache
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						zfs create \
 | 
				
			||||||
 | 
							-o com.sun:auto-snapshot=false \
 | 
				
			||||||
 | 
							${HOSTNAME,,}/var/lib/nfs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						zfs create \
 | 
				
			||||||
 | 
							-o com.sun:auto-snapshot=false \
 | 
				
			||||||
 | 
							${HOSTNAME,,}/var/tmp
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						chmod \
 | 
				
			||||||
 | 
							1777 \
 | 
				
			||||||
 | 
							/mnt/var/tmp
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						zfs create \
 | 
				
			||||||
 | 
							-o mountpoint=/srv \
 | 
				
			||||||
 | 
							${HOSTNAME,,}/srv
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						zfs create \
 | 
				
			||||||
 | 
							-o canmount=off \
 | 
				
			||||||
 | 
							-o mountpoint=/usr \
 | 
				
			||||||
 | 
							${HOSTNAME,,}/usr
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						zfs create \
 | 
				
			||||||
 | 
							${HOSTNAME,,}/usr/local
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						zfs create \
 | 
				
			||||||
 | 
							${HOSTNAME,,}/var/games
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						zfs create \
 | 
				
			||||||
 | 
							${HOSTNAME,,}/var/lib/AccountsService
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						zfs create \
 | 
				
			||||||
 | 
							${HOSTNAME,,}/var/lib/NetworkManager
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						zfs create \
 | 
				
			||||||
 | 
							${HOSTNAME,,}/var/www
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						zfs create \
 | 
				
			||||||
 | 
							-o com.sun:auto-snapshot=false \
 | 
				
			||||||
 | 
							-o mountpoint=/tmp \
 | 
				
			||||||
 | 
							${HOSTNAME,,}/tmp
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if [[ "${ENCRYPTION}" == 'yes' ]]; then
 | 
				
			||||||
 | 
							zfs create \
 | 
				
			||||||
 | 
								-o com.sun:auto-snapshot=false \
 | 
				
			||||||
 | 
								-o mountpoint=/etc/zfs/keys \
 | 
				
			||||||
 | 
								${HOSTNAME,,}/keystore
 | 
				
			||||||
 | 
						fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						zpool set \
 | 
				
			||||||
 | 
							bootfs=${HOSTNAME,,}/ROOT/${ID} \
 | 
				
			||||||
 | 
							${HOSTNAME,,}
 | 
				
			||||||
 | 
					# else
 | 
				
			||||||
 | 
					# 	zfs mount \
 | 
				
			||||||
 | 
					# 	${HOSTNAME,,}/home
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# 	zfs mount \
 | 
				
			||||||
 | 
					# 	${HOSTNAME,,}/home/root
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# 	zfs mount \
 | 
				
			||||||
 | 
					# 	${HOSTNAME,,}/var/log
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# 	zfs mount \
 | 
				
			||||||
 | 
					# 	${HOSTNAME,,}/var/spool
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# 	zfs mount \
 | 
				
			||||||
 | 
					# 	${HOSTNAME,,}/var/cache
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# 	zfs mount \
 | 
				
			||||||
 | 
					# 	${HOSTNAME,,}/var/lib/nfs
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# 	zfs mount \
 | 
				
			||||||
 | 
					# 	${HOSTNAME,,}/var/tmp
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# 	zfs mount \
 | 
				
			||||||
 | 
					# 	${HOSTNAME,,}/srv
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# 	zfs mount \
 | 
				
			||||||
 | 
					# 	${HOSTNAME,,}/usr/local
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# 	zfs mount \
 | 
				
			||||||
 | 
					# 	${HOSTNAME,,}/var/games
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# 	zfs mount \
 | 
				
			||||||
 | 
					# 	${HOSTNAME,,}/var/lib/AccountsService
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# 	zfs mount \
 | 
				
			||||||
 | 
					# 	${HOSTNAME,,}/var/lib/NetworkManager
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# 	zfs mount \
 | 
				
			||||||
 | 
					# 	${HOSTNAME,,}/var/www
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# 	zfs mount \
 | 
				
			||||||
 | 
					# 	${HOSTNAME,,}/keystore
 | 
				
			||||||
 | 
					# fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [[ "${ID}" == 'fedora' ]]; then
 | 
				
			||||||
 | 
						"${BASEDIR}/base-fedora.sh" -1
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# if [[ ! "${*}" = *--no-part* ]]; then
 | 
				
			||||||
 | 
						zfs create \
 | 
				
			||||||
 | 
							${HOSTNAME,,}/var/mail
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						chmod \
 | 
				
			||||||
 | 
							1777 \
 | 
				
			||||||
 | 
							/mnt/tmp
 | 
				
			||||||
 | 
					# else
 | 
				
			||||||
 | 
					# 	zfs mount \
 | 
				
			||||||
 | 
					# 	${HOSTNAME,,}/var/mail
 | 
				
			||||||
 | 
					# fi
 | 
				
			||||||
							
								
								
									
										597
									
								
								partition.sh
									
									
									
									
									
								
							
							
						
						
									
										597
									
								
								partition.sh
									
									
									
									
									
								
							@@ -3,27 +3,6 @@ set -euo pipefail
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
BASEDIR="$(dirname "${0}" | sed "s|^\.|${PWD}|")"
 | 
					BASEDIR="$(dirname "${0}" | sed "s|^\.|${PWD}|")"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
printf \
 | 
					 | 
				
			||||||
	'\033[?47l\012'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
cat << EOF
 | 
					 | 
				
			||||||
#######################################
 | 
					 | 
				
			||||||
##                                   ##
 | 
					 | 
				
			||||||
##  $(cat "${BASEDIR}/title") Script  ##
 | 
					 | 
				
			||||||
##                                   ##
 | 
					 | 
				
			||||||
##   Jean  <jean@easthighnerd.net>   ##
 | 
					 | 
				
			||||||
##                                   ##
 | 
					 | 
				
			||||||
#######################################
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#################
 | 
					 | 
				
			||||||
##             ##
 | 
					 | 
				
			||||||
##  Partition  ##
 | 
					 | 
				
			||||||
##             ##
 | 
					 | 
				
			||||||
#################
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
EOF
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
source \
 | 
					source \
 | 
				
			||||||
	/etc/os-release
 | 
						/etc/os-release
 | 
				
			||||||
source \
 | 
					source \
 | 
				
			||||||
@@ -39,557 +18,45 @@ else
 | 
				
			|||||||
	PART3='-part3'
 | 
						PART3='-part3'
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if [[ "${ID}" == 'debian' ]]; then
 | 
					 | 
				
			||||||
	if [[ ! "${HOST}" == "debian-live" ]]; then
 | 
					 | 
				
			||||||
		cat << EOF | tee /mnt/etc/apt/sources.list.d/contrib.sources &> /dev/null
 | 
					 | 
				
			||||||
Enabled:		yes
 | 
					 | 
				
			||||||
Types:			deb
 | 
					 | 
				
			||||||
URIs:			http://deb.debian.org/debian/
 | 
					 | 
				
			||||||
Suites:			${VERSION_CODENAME}
 | 
					 | 
				
			||||||
Components:		contrib
 | 
					 | 
				
			||||||
Signed-By:		/usr/share/keyrings/debian-archive-keyring.gpg
 | 
					 | 
				
			||||||
EOF
 | 
					 | 
				
			||||||
	fi
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
if [[ -f '/usr/bin/gsettings' ]]; then
 | 
					 | 
				
			||||||
	gsettings \
 | 
					 | 
				
			||||||
		set \
 | 
					 | 
				
			||||||
		org.gnome.desktop.media-handling \
 | 
					 | 
				
			||||||
		automount \
 | 
					 | 
				
			||||||
		false
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
if [[ "${ID}" == 'debian' ]]; then
 | 
					 | 
				
			||||||
	apt \
 | 
					 | 
				
			||||||
		update && \
 | 
					 | 
				
			||||||
	apt \
 | 
					 | 
				
			||||||
		install \
 | 
					 | 
				
			||||||
		--yes \
 | 
					 | 
				
			||||||
		debootstrap \
 | 
					 | 
				
			||||||
		gdisk \
 | 
					 | 
				
			||||||
		zfsutils-linux \
 | 
					 | 
				
			||||||
		systemd-timesyncd
 | 
					 | 
				
			||||||
elif [[ "${ID}" == 'fedora' ]]; then
 | 
					 | 
				
			||||||
	if [[ "${VERSION_ID}" -lt '41' ]]; then
 | 
					 | 
				
			||||||
		dnf config-manager \
 | 
					 | 
				
			||||||
			--disable \
 | 
					 | 
				
			||||||
			updates
 | 
					 | 
				
			||||||
	else
 | 
					 | 
				
			||||||
		dnf config-manager \
 | 
					 | 
				
			||||||
			setopt \
 | 
					 | 
				
			||||||
			updates.enabled=0
 | 
					 | 
				
			||||||
	fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	dnf install \
 | 
					 | 
				
			||||||
		-y \
 | 
					 | 
				
			||||||
		https://zfsonlinux.org/fedora/zfs-release-${ZOL_FEDORA_VER}$(rpm --eval "%{dist}").noarch.rpm
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	dnf install \
 | 
					 | 
				
			||||||
		-y \
 | 
					 | 
				
			||||||
		https://dl.fedoraproject.org/pub/fedora/linux/releases/${VERSION_ID}/Everything/x86_64/os/Packages/k/kernel-devel-$(uname -r).rpm
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	dnf install \
 | 
					 | 
				
			||||||
		-y \
 | 
					 | 
				
			||||||
		zfs \
 | 
					 | 
				
			||||||
		gdisk
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	modprobe \
 | 
					 | 
				
			||||||
		zfs
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
timedatectl
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
if [[ ! "${HOST}" == "debian-live" ]]; then
 | 
					 | 
				
			||||||
	zgenhostid \
 | 
					 | 
				
			||||||
		-f \
 | 
					 | 
				
			||||||
		0x00bab10c
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
swapoff \
 | 
					swapoff \
 | 
				
			||||||
	--all
 | 
						--all
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if [[ ! "${*}" = *--no-part* ]]; then
 | 
					wipefs \
 | 
				
			||||||
	wipefs \
 | 
						-a \
 | 
				
			||||||
		-a \
 | 
						${DISK}
 | 
				
			||||||
		${DISK}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if [[ ! "${DISK_TYPE}" == 'HDD' ]]; then
 | 
					if [[ ! "${DISK_TYPE}" == 'HDD' ]]; then
 | 
				
			||||||
		blkdiscard \
 | 
						blkdiscard \
 | 
				
			||||||
			-f \
 | 
							-f \
 | 
				
			||||||
			${DISK}
 | 
							${DISK}
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sgdisk \
 | 
				
			||||||
 | 
						--zap-all \
 | 
				
			||||||
 | 
						${DISK}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sgdisk \
 | 
				
			||||||
 | 
						-n1:0:+512M \
 | 
				
			||||||
 | 
						-t1:EF00 \
 | 
				
			||||||
 | 
						-c1:EFI \
 | 
				
			||||||
 | 
						${DISK}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [[ "${ENABLE_SWAP}" == "yes" ]]; then
 | 
				
			||||||
 | 
						SWAP_SIZE="$(((($(vmstat -sS M | grep 'total memory' | sed 's/ M total memory//') / 1024) + 1) * 2))"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if [[ "${SWAP_SIZE#}" -gt '32' ]]; then
 | 
				
			||||||
 | 
							SWAP_SIZE='32'
 | 
				
			||||||
	fi
 | 
						fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	sgdisk \
 | 
						sgdisk \
 | 
				
			||||||
		--zap-all \
 | 
							-n2:0:+${SWAP_SIZE}G \
 | 
				
			||||||
 | 
							-t2:BF02 \
 | 
				
			||||||
 | 
							-c2:swap \
 | 
				
			||||||
		${DISK}
 | 
							${DISK}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	sgdisk \
 | 
					 | 
				
			||||||
		-n1:0:+512M \
 | 
					 | 
				
			||||||
		-t1:EF00 \
 | 
					 | 
				
			||||||
		-c1:EFI \
 | 
					 | 
				
			||||||
		${DISK}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if [[ "${ENABLE_SWAP}" == "yes" ]]; then
 | 
					 | 
				
			||||||
		SWAP_SIZE="$(((($(vmstat -sS M | grep 'total memory' | sed 's/ M total memory//') / 1024) + 1) * 2))"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		sgdisk \
 | 
					 | 
				
			||||||
			-n2:0:+${SWAP_SIZE}G \
 | 
					 | 
				
			||||||
			-t2:BF02 \
 | 
					 | 
				
			||||||
			-c2:swap \
 | 
					 | 
				
			||||||
			${DISK}
 | 
					 | 
				
			||||||
	fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	sgdisk \
 | 
					 | 
				
			||||||
		-n3:0:0 \
 | 
					 | 
				
			||||||
		-t3:BF00 \
 | 
					 | 
				
			||||||
		-c3:${ID} \
 | 
					 | 
				
			||||||
		${DISK}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	sleep 5
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if [[ "${ENCRYPTION}" == 'yes' ]]; then
 | 
					 | 
				
			||||||
		ZPOOL_PASSWORD='A'
 | 
					 | 
				
			||||||
		ZPOOL_PASSWORD_VERIFY='B'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		printf \
 | 
					 | 
				
			||||||
			'\033[?47h\033[2J\033[H'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		while [[ ! "${ZPOOL_PASSWORD}" == "${ZPOOL_PASSWORD_VERIFY}" ]] || [[ -z "${ZPOOL_PASSWORD}" ]] || [[ "${#ZPOOL_PASSWORD}" -lt '8' ]]; do
 | 
					 | 
				
			||||||
			printf \
 | 
					 | 
				
			||||||
				"\nEnter a password to encrypt your root pool (minimum 8 characters):\n"
 | 
					 | 
				
			||||||
			read \
 | 
					 | 
				
			||||||
				-r \
 | 
					 | 
				
			||||||
				-s \
 | 
					 | 
				
			||||||
				ZPOOL_PASSWORD
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			printf \
 | 
					 | 
				
			||||||
				"\nVerify the password to encrypt your root pool:\n"
 | 
					 | 
				
			||||||
			read \
 | 
					 | 
				
			||||||
				-r \
 | 
					 | 
				
			||||||
				-s \
 | 
					 | 
				
			||||||
				ZPOOL_PASSWORD_VERIFY
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			if [[ ! "${ZPOOL_PASSWORD}" == "${ZPOOL_PASSWORD_VERIFY}" ]]; then
 | 
					 | 
				
			||||||
				printf \
 | 
					 | 
				
			||||||
					"ERROR:\tPasswords do not match!\n"
 | 
					 | 
				
			||||||
			elif [[ -z "${ZPOOL_PASSWORD}" ]]; then
 | 
					 | 
				
			||||||
				printf \
 | 
					 | 
				
			||||||
					"ERROR:\tPassword is empty!\n"
 | 
					 | 
				
			||||||
			elif [[ "${#ZPOOL_PASSWORD}" -lt '8' ]]; then
 | 
					 | 
				
			||||||
				printf \
 | 
					 | 
				
			||||||
					"ERROR:\tPassword is too short!\n"
 | 
					 | 
				
			||||||
			fi
 | 
					 | 
				
			||||||
		done
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		printf \
 | 
					 | 
				
			||||||
			'\033[?47l'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		mkdir \
 | 
					 | 
				
			||||||
			-p \
 | 
					 | 
				
			||||||
			/etc/zfs/keys/
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		printf \
 | 
					 | 
				
			||||||
			"${ZPOOL_PASSWORD}\n" | tee /etc/zfs/keys/${HOSTNAME,,}.key &> /dev/null
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		chmod \
 | 
					 | 
				
			||||||
			000 \
 | 
					 | 
				
			||||||
			/etc/zfs/keys/${HOSTNAME,,}.key
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		zpool create \
 | 
					 | 
				
			||||||
			-o ashift=12 \
 | 
					 | 
				
			||||||
			-o autotrim=on \
 | 
					 | 
				
			||||||
			-o compatibility=openzfs-2.1-linux \
 | 
					 | 
				
			||||||
			-O encryption=on \
 | 
					 | 
				
			||||||
			-O keylocation=file:///etc/zfs/keys/${HOSTNAME,,}.key \
 | 
					 | 
				
			||||||
			-O keyformat=passphrase \
 | 
					 | 
				
			||||||
			-O acltype=posixacl \
 | 
					 | 
				
			||||||
			-O xattr=sa \
 | 
					 | 
				
			||||||
			-O dnodesize=auto \
 | 
					 | 
				
			||||||
			-O compression=zstd-3 \
 | 
					 | 
				
			||||||
			-O normalization=formD \
 | 
					 | 
				
			||||||
			-O relatime=on \
 | 
					 | 
				
			||||||
			-O canmount=off \
 | 
					 | 
				
			||||||
			-O mountpoint=/ \
 | 
					 | 
				
			||||||
			-R /mnt \
 | 
					 | 
				
			||||||
			${HOSTNAME,,} \
 | 
					 | 
				
			||||||
			${DISK}${PART3}
 | 
					 | 
				
			||||||
	else
 | 
					 | 
				
			||||||
		zpool create \
 | 
					 | 
				
			||||||
			-o ashift=12 \
 | 
					 | 
				
			||||||
			-o autotrim=on \
 | 
					 | 
				
			||||||
			-o compatibility=openzfs-2.1-linux \
 | 
					 | 
				
			||||||
			-O encryption=off \
 | 
					 | 
				
			||||||
			-O acltype=posixacl \
 | 
					 | 
				
			||||||
			-O xattr=sa \
 | 
					 | 
				
			||||||
			-O dnodesize=auto \
 | 
					 | 
				
			||||||
			-O compression=zstd-3 \
 | 
					 | 
				
			||||||
			-O normalization=formD \
 | 
					 | 
				
			||||||
			-O relatime=on \
 | 
					 | 
				
			||||||
			-O canmount=off \
 | 
					 | 
				
			||||||
			-O mountpoint=/ \
 | 
					 | 
				
			||||||
			-R /mnt \
 | 
					 | 
				
			||||||
			${HOSTNAME,,} \
 | 
					 | 
				
			||||||
			${DISK}${PART3}
 | 
					 | 
				
			||||||
	fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	zfs create \
 | 
					 | 
				
			||||||
		-o canmount=off \
 | 
					 | 
				
			||||||
		-o mountpoint=none \
 | 
					 | 
				
			||||||
		${HOSTNAME,,}/ROOT
 | 
					 | 
				
			||||||
else
 | 
					 | 
				
			||||||
	zpool import \
 | 
					 | 
				
			||||||
		-N \
 | 
					 | 
				
			||||||
		-R \
 | 
					 | 
				
			||||||
		/mnt \
 | 
					 | 
				
			||||||
		${HOSTNAME,,}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	zfs load-key \
 | 
					 | 
				
			||||||
		-r \
 | 
					 | 
				
			||||||
		-L prompt \
 | 
					 | 
				
			||||||
		${HOSTNAME,,}
 | 
					 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
zfs create \
 | 
					sgdisk \
 | 
				
			||||||
	-o canmount=noauto \
 | 
						-n3:0:0 \
 | 
				
			||||||
	-o mountpoint=/ \
 | 
						-t3:BF00 \
 | 
				
			||||||
	${HOSTNAME,,}/ROOT/${ID}
 | 
						-c3:${ID} \
 | 
				
			||||||
 | 
						${DISK}
 | 
				
			||||||
zfs mount \
 | 
					 | 
				
			||||||
	${HOSTNAME,,}/ROOT/${ID}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
if [[ ! "${*}" = *--no-part* ]]; then
 | 
					 | 
				
			||||||
	zfs create \
 | 
					 | 
				
			||||||
		${HOSTNAME,,}/home
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	zfs create \
 | 
					 | 
				
			||||||
		-o mountpoint=/root \
 | 
					 | 
				
			||||||
		${HOSTNAME,,}/home/root
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	chmod \
 | 
					 | 
				
			||||||
		700 \
 | 
					 | 
				
			||||||
		/mnt/root
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	zfs create \
 | 
					 | 
				
			||||||
		-o canmount=off \
 | 
					 | 
				
			||||||
		-o mountpoint=/var \
 | 
					 | 
				
			||||||
		${HOSTNAME,,}/var
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	zfs create \
 | 
					 | 
				
			||||||
		-o canmount=off \
 | 
					 | 
				
			||||||
		${HOSTNAME,,}/var/lib
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	zfs create \
 | 
					 | 
				
			||||||
		${HOSTNAME,,}/var/log
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	zfs create \
 | 
					 | 
				
			||||||
		${HOSTNAME,,}/var/spool
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	zfs create \
 | 
					 | 
				
			||||||
		-o com.sun:auto-snapshot=false \
 | 
					 | 
				
			||||||
		${HOSTNAME,,}/var/cache
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	zfs create \
 | 
					 | 
				
			||||||
		-o com.sun:auto-snapshot=false \
 | 
					 | 
				
			||||||
		${HOSTNAME,,}/var/lib/nfs
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	zfs create \
 | 
					 | 
				
			||||||
		-o com.sun:auto-snapshot=false \
 | 
					 | 
				
			||||||
		${HOSTNAME,,}/var/tmp
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	chmod \
 | 
					 | 
				
			||||||
		1777 \
 | 
					 | 
				
			||||||
		/mnt/var/tmp
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	zfs create \
 | 
					 | 
				
			||||||
		-o mountpoint=/srv \
 | 
					 | 
				
			||||||
		${HOSTNAME,,}/srv
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	zfs create \
 | 
					 | 
				
			||||||
		-o canmount=off \
 | 
					 | 
				
			||||||
		-o mountpoint=/usr \
 | 
					 | 
				
			||||||
		${HOSTNAME,,}/usr
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	zfs create \
 | 
					 | 
				
			||||||
		${HOSTNAME,,}/usr/local
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	zfs create \
 | 
					 | 
				
			||||||
		${HOSTNAME,,}/var/games
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	zfs create \
 | 
					 | 
				
			||||||
		${HOSTNAME,,}/var/lib/AccountsService
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	zfs create \
 | 
					 | 
				
			||||||
		${HOSTNAME,,}/var/lib/NetworkManager
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	zfs create \
 | 
					 | 
				
			||||||
		${HOSTNAME,,}/var/www
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	zfs create \
 | 
					 | 
				
			||||||
		-o com.sun:auto-snapshot=false \
 | 
					 | 
				
			||||||
		-o mountpoint=/tmp \
 | 
					 | 
				
			||||||
		${HOSTNAME,,}/tmp
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if [[ "${ENCRYPTION}" == 'yes' ]]; then
 | 
					 | 
				
			||||||
		zfs create \
 | 
					 | 
				
			||||||
			-o com.sun:auto-snapshot=false \
 | 
					 | 
				
			||||||
			-o mountpoint=/etc/zfs/keys \
 | 
					 | 
				
			||||||
			${HOSTNAME,,}/keystore
 | 
					 | 
				
			||||||
	fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	zpool set \
 | 
					 | 
				
			||||||
		bootfs=${HOSTNAME,,}/ROOT/${ID} \
 | 
					 | 
				
			||||||
		${HOSTNAME,,}
 | 
					 | 
				
			||||||
else
 | 
					 | 
				
			||||||
	zfs mount \
 | 
					 | 
				
			||||||
	${HOSTNAME,,}/home
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	zfs mount \
 | 
					 | 
				
			||||||
	${HOSTNAME,,}/home/root
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	zfs mount \
 | 
					 | 
				
			||||||
	${HOSTNAME,,}/var/log
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	zfs mount \
 | 
					 | 
				
			||||||
	${HOSTNAME,,}/var/spool
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	zfs mount \
 | 
					 | 
				
			||||||
	${HOSTNAME,,}/var/cache
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	zfs mount \
 | 
					 | 
				
			||||||
	${HOSTNAME,,}/var/lib/nfs
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	zfs mount \
 | 
					 | 
				
			||||||
	${HOSTNAME,,}/var/tmp
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	zfs mount \
 | 
					 | 
				
			||||||
	${HOSTNAME,,}/srv
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	zfs mount \
 | 
					 | 
				
			||||||
	${HOSTNAME,,}/usr/local
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	zfs mount \
 | 
					 | 
				
			||||||
	${HOSTNAME,,}/var/games
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	zfs mount \
 | 
					 | 
				
			||||||
	${HOSTNAME,,}/var/lib/AccountsService
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	zfs mount \
 | 
					 | 
				
			||||||
	${HOSTNAME,,}/var/lib/NetworkManager
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	zfs mount \
 | 
					 | 
				
			||||||
	${HOSTNAME,,}/var/www
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	zfs mount \
 | 
					 | 
				
			||||||
	${HOSTNAME,,}/keystore
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
if [[ "${ID}" == 'fedora' ]]; then
 | 
					 | 
				
			||||||
	mkdir -p /run/install
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if [[ "${VERSION_ID}" -lt '41' ]]; then
 | 
					 | 
				
			||||||
		mount /dev/mapper/live-base /run/install
 | 
					 | 
				
			||||||
	else
 | 
					 | 
				
			||||||
		mount /dev/live-base /run/install
 | 
					 | 
				
			||||||
	fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	rsync -pogAXtlHrDx \
 | 
					 | 
				
			||||||
		--stats \
 | 
					 | 
				
			||||||
		--exclude=/boot/efi/* \
 | 
					 | 
				
			||||||
		--exclude=/etc/machine-id \
 | 
					 | 
				
			||||||
		--info=progress2 \
 | 
					 | 
				
			||||||
		/run/install/ /mnt
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
if [[ ! "${*}" = *--no-part* ]]; then
 | 
					 | 
				
			||||||
	zfs create \
 | 
					 | 
				
			||||||
		${HOSTNAME,,}/var/mail
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	chmod \
 | 
					 | 
				
			||||||
		1777 \
 | 
					 | 
				
			||||||
		/mnt/tmp
 | 
					 | 
				
			||||||
else
 | 
					 | 
				
			||||||
	zfs mount \
 | 
					 | 
				
			||||||
	${HOSTNAME,,}/var/mail
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
mkdir \
 | 
					 | 
				
			||||||
	-p \
 | 
					 | 
				
			||||||
	/mnt/run
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
mount \
 | 
					 | 
				
			||||||
	-t \
 | 
					 | 
				
			||||||
	tmpfs \
 | 
					 | 
				
			||||||
	tmpfs \
 | 
					 | 
				
			||||||
	/mnt/run
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
mkdir \
 | 
					 | 
				
			||||||
	-p \
 | 
					 | 
				
			||||||
	/mnt/run/lock
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
if [[ "${ID}" == 'elementary' ]]; then
 | 
					 | 
				
			||||||
	debootstrap \
 | 
					 | 
				
			||||||
		"${UBUNTU_VERSION_CODENAME}" \
 | 
					 | 
				
			||||||
		/mnt
 | 
					 | 
				
			||||||
elif [[ "${ID}" == 'debian' ]]; then
 | 
					 | 
				
			||||||
	debootstrap \
 | 
					 | 
				
			||||||
		"${VERSION_CODENAME}" \
 | 
					 | 
				
			||||||
		/mnt
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
printf \
 | 
					 | 
				
			||||||
	"${HOSTNAME}\n" | tee /mnt/etc/hostname &> /dev/null
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
printf \
 | 
					 | 
				
			||||||
	"127.0.1.1\t${HOSTNAME}\n" | tee --append /mnt/etc/hosts &> /dev/null
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
if [[ "${ID}" == 'debian' ]]; then
 | 
					 | 
				
			||||||
	NETWORK_INTERFACE=($(ip -br addr show | sed 's| .*$||g' | grep -v '^lo' | grep -v 'tailscale' | grep -v '^wg'))
 | 
					 | 
				
			||||||
	shopt -s extglob
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	for ((i = 0; i < ${#NETWORK_INTERFACE[@]}; i++)); do
 | 
					 | 
				
			||||||
		cat << EOF | tee /mnt/etc/network/interfaces.d/${NETWORK_INTERFACE[$i]} &> /dev/null
 | 
					 | 
				
			||||||
allow-hotplug	${NETWORK_INTERFACE[$i]}
 | 
					 | 
				
			||||||
iface		${NETWORK_INTERFACE[$i]}	inet	dhcp
 | 
					 | 
				
			||||||
EOF
 | 
					 | 
				
			||||||
	done
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
if [[ "${ID}" == 'elementary' ]]; then
 | 
					 | 
				
			||||||
	cat <<EOF >/mnt/etc/apt/sources.list
 | 
					 | 
				
			||||||
deb http://archive.ubuntu.com/ubuntu/ ${UBUNTU_VERSION_CODENAME} main restricted universe multiverse
 | 
					 | 
				
			||||||
deb-src http://archive.ubuntu.com/ubuntu/ ${UBUNTU_VERSION_CODENAME} main restricted universe multiverse
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
deb http://security.ubuntu.com/ubuntu/ ${UBUNTU_VERSION_CODENAME}-security main restricted universe multiverse
 | 
					 | 
				
			||||||
deb-src http://security.ubuntu.com/ubuntu/ ${UBUNTU_VERSION_CODENAME}-security main restricted universe multiverse
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
deb http://archive.ubuntu.com/ubuntu/ ${UBUNTU_VERSION_CODENAME}-updates main restricted universe multiverse
 | 
					 | 
				
			||||||
deb-src http://archive.ubuntu.com/ubuntu/ ${UBUNTU_VERSION_CODENAME}-updates main restricted universe multiverse
 | 
					 | 
				
			||||||
EOF
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	cat <<EOF >/mnt/etc/apt/sources.list.d/elementary.list
 | 
					 | 
				
			||||||
deb https://ppa.launchpadcontent.net/elementary-os/stable/ubuntu ${UBUNTU_VERSION_CODENAME} main
 | 
					 | 
				
			||||||
deb-src https://ppa.launchpadcontent.net/elementary-os/stable/ubuntu ${UBUNTU_VERSION_CODENAME} main
 | 
					 | 
				
			||||||
EOF
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	cat <<EOF >/mnt/etc/apt/sources.list.d/patches.list
 | 
					 | 
				
			||||||
deb https://ppa.launchpadcontent.net/elementary-os/os-patches/ubuntu ${UBUNTU_VERSION_CODENAME} main
 | 
					 | 
				
			||||||
deb-src https://ppa.launchpadcontent.net/elementary-os/os-patches/ubuntu ${UBUNTU_VERSION_CODENAME} main
 | 
					 | 
				
			||||||
EOF
 | 
					 | 
				
			||||||
elif [[ "${ID}" == 'debian' ]]; then
 | 
					 | 
				
			||||||
	cat << EOF | tee /mnt/etc/apt/sources.list.d/${VERSION_CODENAME}.sources &> /dev/null
 | 
					 | 
				
			||||||
# ${VERSION_CODENAME^}
 | 
					 | 
				
			||||||
Enabled:		yes
 | 
					 | 
				
			||||||
Types:			deb deb-src
 | 
					 | 
				
			||||||
URIs:			http://deb.debian.org/debian/
 | 
					 | 
				
			||||||
Suites:			${VERSION_CODENAME}
 | 
					 | 
				
			||||||
Components:		main non-free-firmware contrib
 | 
					 | 
				
			||||||
Signed-By:		/usr/share/keyrings/debian-archive-keyring.gpg
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# ${VERSION_CODENAME^} Security
 | 
					 | 
				
			||||||
Enabled:		yes
 | 
					 | 
				
			||||||
Types:			deb deb-src
 | 
					 | 
				
			||||||
URIs:			http://deb.debian.org/debian-security/
 | 
					 | 
				
			||||||
Suites:			${VERSION_CODENAME}-security
 | 
					 | 
				
			||||||
Components:		main non-free-firmware contrib
 | 
					 | 
				
			||||||
Signed-By:		/usr/share/keyrings/debian-archive-keyring.gpg
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# ${VERSION_CODENAME^} Updates
 | 
					 | 
				
			||||||
Enabled:		yes
 | 
					 | 
				
			||||||
Types:			deb deb-src
 | 
					 | 
				
			||||||
URIs:			http://deb.debian.org/debian/
 | 
					 | 
				
			||||||
Suites:			${VERSION_CODENAME}-updates
 | 
					 | 
				
			||||||
Components:		main non-free-firmware contrib
 | 
					 | 
				
			||||||
Signed-By:		/usr/share/keyrings/debian-archive-keyring.gpg
 | 
					 | 
				
			||||||
EOF
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
mount \
 | 
					 | 
				
			||||||
	--rbind \
 | 
					 | 
				
			||||||
	/dev \
 | 
					 | 
				
			||||||
	/mnt/dev
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
mount \
 | 
					 | 
				
			||||||
	--rbind \
 | 
					 | 
				
			||||||
	/proc \
 | 
					 | 
				
			||||||
	/mnt/proc
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
mount \
 | 
					 | 
				
			||||||
	--rbind \
 | 
					 | 
				
			||||||
	/sys \
 | 
					 | 
				
			||||||
	/mnt/sys
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
cp \
 | 
					 | 
				
			||||||
	/etc/hostid \
 | 
					 | 
				
			||||||
	/mnt/etc/
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
if [[ "${ID}" == 'fedora' ]]; then
 | 
					 | 
				
			||||||
	mv /mnt/etc/resolv.conf \
 | 
					 | 
				
			||||||
		/mnt/etc/resolv.conf.orig
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	cp -L \
 | 
					 | 
				
			||||||
		/etc/resolv.conf \
 | 
					 | 
				
			||||||
		/mnt/etc
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
rsync -pogAXtlHrDx \
 | 
					 | 
				
			||||||
	"${BASEDIR}" \
 | 
					 | 
				
			||||||
		/mnt
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
if [[ "${ID}" == 'elementary' ]]; then
 | 
					 | 
				
			||||||
	rsync -pogAXtlHrDx \
 | 
					 | 
				
			||||||
		/etc/skel \
 | 
					 | 
				
			||||||
			/mnt/etc
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
if [[ ! "${*}" = *--no-part* ]]; then
 | 
					 | 
				
			||||||
	if [[ -f "/etc/zfs/keys/${HOSTNAME,,}.key" ]]; then
 | 
					 | 
				
			||||||
		cp \
 | 
					 | 
				
			||||||
			/etc/zfs/keys/${HOSTNAME,,}.key \
 | 
					 | 
				
			||||||
			/mnt/etc/zfs/keys/
 | 
					 | 
				
			||||||
	fi
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
if [[ "${ID}" == 'elementary' ]]; then
 | 
					 | 
				
			||||||
	cp \
 | 
					 | 
				
			||||||
		/etc/os-release \
 | 
					 | 
				
			||||||
		/mnt/etc
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	cp \
 | 
					 | 
				
			||||||
		/etc/apt/trusted.gpg.d/{elementary,patches}.key.asc \
 | 
					 | 
				
			||||||
		/mnt/etc/apt/trusted.gpg.d/
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
printf \
 | 
					 | 
				
			||||||
	"\nNow chrooting into /mnt...\n\n"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
chroot \
 | 
					 | 
				
			||||||
	/mnt \
 | 
					 | 
				
			||||||
	bash \
 | 
					 | 
				
			||||||
	--login
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
mount | grep -v zfs | tac | awk '/\/mnt/ {print $3}' | xargs -I {} umount -Rlf {}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
if [[ "${ID}" == 'fedora' ]]; then
 | 
					 | 
				
			||||||
	umount \
 | 
					 | 
				
			||||||
		-nR \
 | 
					 | 
				
			||||||
		/mnt
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
zpool \
 | 
					 | 
				
			||||||
	export \
 | 
					 | 
				
			||||||
	-a
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
printf \
 | 
					 | 
				
			||||||
	'\033[?47h\033[2J\033[H'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
cat <<EOF
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Script has finished running
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Please reboot your computer
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Press any key to return to the main menu
 | 
					 | 
				
			||||||
EOF
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
read -srn 1
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										34
									
								
								post-inst.sh
									
									
									
									
									
								
							
							
						
						
									
										34
									
								
								post-inst.sh
									
									
									
									
									
								
							@@ -88,6 +88,10 @@ EOF
 | 
				
			|||||||
		audio,cdrom,dip,floppy,wheel,video,dialout \
 | 
							audio,cdrom,dip,floppy,wheel,video,dialout \
 | 
				
			||||||
		${USERNAME}
 | 
							${USERNAME}
 | 
				
			||||||
else
 | 
					else
 | 
				
			||||||
 | 
						if [[ -z "$(cat /etc/group | grep 'lpadmin')" ]]; then
 | 
				
			||||||
 | 
							groupadd --gid 108 lpadmin
 | 
				
			||||||
 | 
						fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	usermod \
 | 
						usermod \
 | 
				
			||||||
		-a \
 | 
							-a \
 | 
				
			||||||
		-G \
 | 
							-G \
 | 
				
			||||||
@@ -111,7 +115,9 @@ Pin: release n=${UBUNTU_VERSION_CODENAME}-backports
 | 
				
			|||||||
Pin-Priority: -1
 | 
					Pin-Priority: -1
 | 
				
			||||||
EOF
 | 
					EOF
 | 
				
			||||||
elif [[ "${ID}" == 'debian' ]]; then
 | 
					elif [[ "${ID}" == 'debian' ]]; then
 | 
				
			||||||
	cat << EOF | tee /etc/apt/sources.list.d/backports.sources &> /dev/null
 | 
						cat << EOF | tee --append /etc/apt/sources.list.d/${VERSION_CODENAME}.sources &> /dev/null
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# ${VERSION_CODENAME^} Backports
 | 
				
			||||||
Enabled:		yes
 | 
					Enabled:		yes
 | 
				
			||||||
Types:			deb deb-src
 | 
					Types:			deb deb-src
 | 
				
			||||||
URIs:			http://deb.debian.org/debian/
 | 
					URIs:			http://deb.debian.org/debian/
 | 
				
			||||||
@@ -121,9 +127,13 @@ Signed-By:		/usr/share/keyrings/debian-archive-keyring.gpg
 | 
				
			|||||||
EOF
 | 
					EOF
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	cat << EOF | tee /etc/apt/preferences.d/backports.pref &> /dev/null
 | 
						cat << EOF | tee /etc/apt/preferences.d/backports.pref &> /dev/null
 | 
				
			||||||
Package: *
 | 
					Package:		*
 | 
				
			||||||
Pin: release n=${VERSION_CODENAME}*
 | 
					Pin:			release	n=${VERSION_CODENAME}*
 | 
				
			||||||
Pin-Priority: 990
 | 
					Pin-Priority:	990
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Package:		linux-*
 | 
				
			||||||
 | 
					Pin:			release	n=${VERSION_CODENAME}-backports
 | 
				
			||||||
 | 
					Pin-Priority:	-1
 | 
				
			||||||
EOF
 | 
					EOF
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if [[ "${VERSION_CODENAME}" == 'bookworm' ]]; then
 | 
						if [[ "${VERSION_CODENAME}" == 'bookworm' ]]; then
 | 
				
			||||||
@@ -202,7 +212,7 @@ chown -R ${USERNAME}:${USERNAME} /home/${USERNAME}
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
sudo -u ${USERNAME} cp -a /etc/skel/. /home/${USERNAME}
 | 
					sudo -u ${USERNAME} cp -a /etc/skel/. /home/${USERNAME}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if [[ ! -z "$(find -P /home/${USERNAME}/ | grep '\.face')" ]]; then
 | 
					if [[ ! -z "\$(find -P /home/${USERNAME}/ | grep '\.face')" ]]; then
 | 
				
			||||||
	find -P /home/${USERNAME}/ | grep '\.face' | xargs -d '\n' -I {} rm {}
 | 
						find -P /home/${USERNAME}/ | grep '\.face' | xargs -d '\n' -I {} rm {}
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -227,11 +237,11 @@ EOF
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	if [[ "${ID}" == 'fedora' ]]; then
 | 
						if [[ "${ID}" == 'fedora' ]]; then
 | 
				
			||||||
		printf \
 | 
							printf \
 | 
				
			||||||
			'@reboot /usr/bin/home-fix.sh\n' | \
 | 
								"@reboot\tsudo -u ${USERNAME} '${BASEDIR}/finalize.sh'\n@reboot\t/usr/bin/home-fix.sh\n" | \
 | 
				
			||||||
			tee /var/spool/cron/root &> /dev/null
 | 
								tee /var/spool/cron/root &> /dev/null
 | 
				
			||||||
	elif [[ "${ID}" == 'debian' ]]; then
 | 
						elif [[ "${ID}" == 'debian' ]]; then
 | 
				
			||||||
		printf \
 | 
							printf \
 | 
				
			||||||
			'@reboot /usr/bin/home-fix.sh\n' | \
 | 
								"@reboot\tsudo -u ${USERNAME} '${BASEDIR}/finalize.sh'\n@reboot\t/usr/bin/home-fix.sh\n" | \
 | 
				
			||||||
			tee /var/spool/cron/crontabs/root &> /dev/null
 | 
								tee /var/spool/cron/crontabs/root &> /dev/null
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		chown \
 | 
							chown \
 | 
				
			||||||
@@ -244,6 +254,14 @@ EOF
 | 
				
			|||||||
	fi
 | 
						fi
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [[ ! -f '/usr/bin/shutdown' ]]; then
 | 
				
			||||||
 | 
						ln -s /sbin/shutdown /usr/bin/shutdown
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [[ ! -f '/usr/bin/reboot' ]]; then
 | 
				
			||||||
 | 
						ln -s /sbin/reboot /usr/bin/reboot
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
zfs \
 | 
					zfs \
 | 
				
			||||||
	snapshot \
 | 
						snapshot \
 | 
				
			||||||
	${HOSTNAME,,}/ROOT/${ID}@post-install
 | 
						${HOSTNAME,,}/ROOT/${ID}@post-install
 | 
				
			||||||
@@ -255,7 +273,7 @@ cat << EOF
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
Script has finished running
 | 
					Script has finished running
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Please reboot your computer
 | 
					Please exit the chroot
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Press any key to return to the main menu
 | 
					Press any key to return to the main menu
 | 
				
			||||||
EOF
 | 
					EOF
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										220
									
								
								pre-inst.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										220
									
								
								pre-inst.sh
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,220 @@
 | 
				
			|||||||
 | 
					#!/bin/bash
 | 
				
			||||||
 | 
					set -euo pipefail
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					BASEDIR="$(dirname "${0}" | sed "s|^\.|${PWD}|")"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					printf \
 | 
				
			||||||
 | 
						'\033[?47l\012'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					cat << EOF
 | 
				
			||||||
 | 
					#######################################
 | 
				
			||||||
 | 
					##                                   ##
 | 
				
			||||||
 | 
					##  $(cat "${BASEDIR}/title") Script  ##
 | 
				
			||||||
 | 
					##                                   ##
 | 
				
			||||||
 | 
					##   Jean  <jean@easthighnerd.net>   ##
 | 
				
			||||||
 | 
					##                                   ##
 | 
				
			||||||
 | 
					#######################################
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					####################
 | 
				
			||||||
 | 
					##                ##
 | 
				
			||||||
 | 
					##      Pre       ##
 | 
				
			||||||
 | 
					##  Installation  ##
 | 
				
			||||||
 | 
					##                ##
 | 
				
			||||||
 | 
					####################
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					EOF
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					source \
 | 
				
			||||||
 | 
						/etc/os-release
 | 
				
			||||||
 | 
					source \
 | 
				
			||||||
 | 
						"${BASEDIR}/system.conf"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [[ "${ID}" == 'debian' ]]; then
 | 
				
			||||||
 | 
						if [[ ! "$(hostname)" == "debian-live" ]]; then
 | 
				
			||||||
 | 
							cat << EOF | tee /etc/apt/sources.list.d/contrib.sources 1> /dev/null
 | 
				
			||||||
 | 
					Enabled:		yes
 | 
				
			||||||
 | 
					Types:			deb
 | 
				
			||||||
 | 
					URIs:			http://deb.debian.org/debian/
 | 
				
			||||||
 | 
					Suites:			${VERSION_CODENAME}
 | 
				
			||||||
 | 
					Components:		contrib
 | 
				
			||||||
 | 
					Signed-By:		/usr/share/keyrings/debian-archive-keyring.gpg
 | 
				
			||||||
 | 
					EOF
 | 
				
			||||||
 | 
						fi
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [[ -f '/usr/bin/gsettings' ]]; then
 | 
				
			||||||
 | 
						gsettings \
 | 
				
			||||||
 | 
							set \
 | 
				
			||||||
 | 
							org.gnome.desktop.media-handling \
 | 
				
			||||||
 | 
							automount \
 | 
				
			||||||
 | 
							false
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [[ "${ID}" == 'debian' ]] || [[ "${ID}" == 'elementary' ]]; then
 | 
				
			||||||
 | 
						apt \
 | 
				
			||||||
 | 
							update && \
 | 
				
			||||||
 | 
						apt \
 | 
				
			||||||
 | 
							install \
 | 
				
			||||||
 | 
							--yes \
 | 
				
			||||||
 | 
							mmdebstrap \
 | 
				
			||||||
 | 
							gdisk \
 | 
				
			||||||
 | 
							systemd-timesyncd \
 | 
				
			||||||
 | 
							whois \
 | 
				
			||||||
 | 
							zfsutils-linux
 | 
				
			||||||
 | 
					elif [[ "${ID}" == 'fedora' ]]; then
 | 
				
			||||||
 | 
						if [[ "${VERSION_ID}" -lt '41' ]]; then
 | 
				
			||||||
 | 
							dnf config-manager \
 | 
				
			||||||
 | 
								--disable \
 | 
				
			||||||
 | 
								updates
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
							dnf config-manager \
 | 
				
			||||||
 | 
								setopt \
 | 
				
			||||||
 | 
								updates.enabled=0
 | 
				
			||||||
 | 
						fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						dnf install \
 | 
				
			||||||
 | 
							-y \
 | 
				
			||||||
 | 
							https://zfsonlinux.org/fedora/zfs-release-${ZOL_FEDORA_VER}$(rpm --eval "%{dist}").noarch.rpm
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						dnf install \
 | 
				
			||||||
 | 
							-y \
 | 
				
			||||||
 | 
							https://dl.fedoraproject.org/pub/fedora/linux/releases/${VERSION_ID}/Everything/x86_64/os/Packages/k/kernel-devel-$(uname -r).rpm
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						dnf install \
 | 
				
			||||||
 | 
							-y \
 | 
				
			||||||
 | 
							zfs \
 | 
				
			||||||
 | 
							gdisk
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						modprobe \
 | 
				
			||||||
 | 
							zfs
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					timedatectl
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [[ ! "$(hostname)" == "debian-live" ]]; then
 | 
				
			||||||
 | 
						zgenhostid \
 | 
				
			||||||
 | 
							-f \
 | 
				
			||||||
 | 
							0x00bab10c
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					"${BASEDIR}/partition.sh"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sleep 5
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					"${BASEDIR}/mkfs.zfs.sh"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					mkdir \
 | 
				
			||||||
 | 
						-p \
 | 
				
			||||||
 | 
						/mnt/run
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					mount \
 | 
				
			||||||
 | 
						-t \
 | 
				
			||||||
 | 
						tmpfs \
 | 
				
			||||||
 | 
						tmpfs \
 | 
				
			||||||
 | 
						/mnt/run
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					mkdir \
 | 
				
			||||||
 | 
						-p \
 | 
				
			||||||
 | 
						/mnt/run/lock
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [[ "${ID}" == 'elementary' ]]; then
 | 
				
			||||||
 | 
						"${BASEDIR}/base-elementary.sh" -1
 | 
				
			||||||
 | 
					elif [[ "${ID}" == 'debian' ]]; then
 | 
				
			||||||
 | 
						"${BASEDIR}/base-debian.sh" -1
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					printf \
 | 
				
			||||||
 | 
						"${HOSTNAME}\n" | tee /mnt/etc/hostname &> /dev/null
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					printf \
 | 
				
			||||||
 | 
						"127.0.1.1\t${HOSTNAME}\n" | tee --append /mnt/etc/hosts &> /dev/null
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [[ "${ID}" == 'debian' ]]; then
 | 
				
			||||||
 | 
						"${BASEDIR}/base-debian.sh" -2
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [[ "${ID}" == 'elementary' ]]; then
 | 
				
			||||||
 | 
						"${BASEDIR}/base-elementary.sh" -2
 | 
				
			||||||
 | 
					elif [[ "${ID}" == 'debian' ]]; then
 | 
				
			||||||
 | 
						"${BASEDIR}/base-debian.sh" -3
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					mount \
 | 
				
			||||||
 | 
						--rbind \
 | 
				
			||||||
 | 
						/dev \
 | 
				
			||||||
 | 
						/mnt/dev
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					mount \
 | 
				
			||||||
 | 
						--rbind \
 | 
				
			||||||
 | 
						/proc \
 | 
				
			||||||
 | 
						/mnt/proc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					mount \
 | 
				
			||||||
 | 
						--rbind \
 | 
				
			||||||
 | 
						/sys \
 | 
				
			||||||
 | 
						/mnt/sys
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					cp \
 | 
				
			||||||
 | 
						/etc/hostid \
 | 
				
			||||||
 | 
						/mnt/etc/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [[ "${ID}" == 'fedora' ]]; then
 | 
				
			||||||
 | 
						"${BASEDIR}/base-fedora.sh" -2
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					rsync -pogAXtlHrDx \
 | 
				
			||||||
 | 
						"${BASEDIR}" \
 | 
				
			||||||
 | 
							/mnt
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [[ "${ID}" == 'elementary' ]]; then
 | 
				
			||||||
 | 
						"${BASEDIR}/base-elementary.sh" -3
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# if [[ ! "${*}" = *--no-part* ]]; then
 | 
				
			||||||
 | 
						if [[ -f "/etc/zfs/keys/${HOSTNAME,,}.key" ]]; then
 | 
				
			||||||
 | 
							cp \
 | 
				
			||||||
 | 
								/etc/zfs/keys/${HOSTNAME,,}.key \
 | 
				
			||||||
 | 
								/mnt/etc/zfs/keys/
 | 
				
			||||||
 | 
						fi
 | 
				
			||||||
 | 
					# fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [[ "${ID}" == 'elementary' ]]; then
 | 
				
			||||||
 | 
						"${BASEDIR}/base-elementary.sh" -4
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					printf \
 | 
				
			||||||
 | 
						"\nNow chrooting into /mnt...\n\n"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					chroot \
 | 
				
			||||||
 | 
						/mnt \
 | 
				
			||||||
 | 
						"$(printf "${BASEDIR}\n" | sed 's|.*\/|\/|')/install.sh"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					mount | grep -v zfs | tac | awk '/\/mnt/ {print $3}' | xargs -I {} umount -Rlf {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [[ "${ID}" == 'fedora' ]]; then
 | 
				
			||||||
 | 
						umount \
 | 
				
			||||||
 | 
							-nR \
 | 
				
			||||||
 | 
							/mnt
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					zpool \
 | 
				
			||||||
 | 
						export \
 | 
				
			||||||
 | 
						-a
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					printf \
 | 
				
			||||||
 | 
						'\033[?47h\033[2J\033[H'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					cat <<EOF
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Script has finished running
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Please reboot your computer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Press any key to return to the main menu
 | 
				
			||||||
 | 
					EOF
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					read -srn 1
 | 
				
			||||||
		Reference in New Issue
	
	Block a user