#!/bin/zsh
mkdir -p /tmp/jobo-subshell
cd /tmp/jobo-subshell
cat /etc/fstab >/tmp/state.0
cat /etc/locale.gen >>/tmp/state.0
cat /etc/timezone >>/tmp/state.0
ls -l /etc/localtime >>/tmp/state.0
cat /etc/hostname >>/tmp/state.0
grep -i hostname /etc/rc.conf >>/tmp/state.0
ls -l /boot >>/tmp/state.0
ls -l /boot/grub >>/tmp/state.0
ls -l /etc/runit/runsvdir/default >>/tmp/state.0
clear
cat /etc/motd | grep -v joborun
echo " "
echo " "
echo "	As Obarun says, 'control you own data', do not let the system and those who create "
echo "	or influence it control you through your data.  We just bring you a step or two closer "
echo "	to this goal!"
echo "	"
echo " "
echo "	You choose whether to build your own packages/software, you configure your system,"
echo "	and then you get closer in being in control of your data. "
echo " "
echo " "
echo " "
echo "	Enter to continue or Ctrl-C to abort the script at any stage"
echo "	Run the script over and over again, it will affect nothing unless"
echo "	you modify something withing the subshells triggered."
read
clear && cat /etc/motd | grep -v joborun
echo " "
echo " "
echo "	Steps of the script "
echo " _________________________________________________ "
echo "	1	fstab"
echo "	2	locale"
echo "	3	timezone"
echo "	4	hostname"
echo "	5	password"
echo "	6	pacman --init and update/upgrade "
echo "	7	kernel and headers"
echo "	8	bootloader"
echo "	9	configure runit"
echo "       9.1        add s6 and 66"
echo "	10	configure .xinitrc"
echo "	11	reboot"
echo " "
echo " "
echo "	Enter to continue or Ctrl-C to abort the script"
read
clear && cat /etc/motd | grep -v joborun
echo "	This is a script so you can go from installing the minimal Joborun tarball image"
echo "	to a complete bootable installation."
echo "	"
echo "	Hit enter to continue, hit Ctrl-C to abort script "
read
clear && cat /etc/motd | grep -v joborun
echo " "
echo " "
echo "	This script should run as root so on each step where a subshell opens to give you"
echo "	the chance to configure the system you will not have to use sudo on each command."
echo "	The script itself makes no changes to the system at all, no matter how many times"
echo "	it runs.  It only takes you step by step to the minimal configurations you should"
echo "	make to have a bootable system."
echo " "
echo "	As we do not believe in handholding automation, we suggest and explain the minimal"
echo "	necessary steps, but we do not make automatic/default choices for you, beyond what"
echo "	comes from upstream and arch-linux."
echo " "
echo " "
echo "Enter to continue or Ctrl-C to abort the script"
read
clear && cat /etc/motd | grep -v joborun
echo " "
echo "	First and most crucial step after chrooting into the installation (system partition),"
echo "	is to create a good fstab map of mounted systems.  We assume you have setup your /boot"
echo "	efi partition if used, a swap partition, and all other mountable filesystems, like"
echo "	/home /var or /var/cache, etc."
echo "	"
echo "	1	fstab "
echo "cat /etc/fstab"
cat /etc/fstab
echo " "
echo "	this is your current /etc/fstab and below is your current state of mounted filesystems"
echo " "
df
echo "	"
echo "	This is your current list of partition UUIDs and their labels, if they have any"
echo " "
echo "	'ls -lh /dev/disk/by-uuid'"
ls -lh /dev/disk/by-uuid
echo " "
echo "ls -lh /dev/disk/by-label"
ls -lh /dev/disk/by-label
echo " "
echo "	'% mount /dev/sdc13 /home' will mount sdc13 partition to /home directory,"
echo "	'% swapon /dev/sdd32 ' will begin swapping memmory at /dev/sdd32"
echo "	You can do this within this sub-shell, enter exit when you are done to continue this script."
zsh
echo "	.... to continue press enter "
read
echo "	Now that you have mounted everything you wanted mounted at boot time, run the"
echo "	following command: "
echo "	"
echo "	Note that if you are in a chroot session /etc/resolv.conf is mounted from the"
echo "	host system, and this should not be included in your fstab. "
echo " "
echo "	% genfstab -U / | grep -v resolv >/tmp/fstab"
echo " "
echo "	you can point the output to /etc/fstab directly as you are running as root but"
echo "	it is best to examine the output before you enter it.  To make life easier "
echo "	(without flipping from tty to tty or teminal tab to terminal tab), we created"
echo "	/tmp/fstab for you"
echo "	hit enter to see it!"
read
genfstab -U / | grep -v resolv >/tmp/fstab
echo " "
cat /tmp/fstab
echo " "
echo "	you can edit and then as root 'cp /tmp/fstab /etc/fstab'  but we are not going"
echo "	to assume everything is well, since you know better.  When done copy it from tmp"
echo "	to etc and then enter ' % mount -a ' to verify you get no errors, '% df ' "
echo "	afterwards to see what is mounted, ' % free ' to see that your swap memmory is working."
echo " "
echo "	You can do this within this sub-shell, enter exit when you are done to continue this script."
zsh
echo "	.... to continue press enter "
read
mount -a
df
free
echo "	.... if everything seems ok to you and you get no errors after 'mount -a' press"
echo "	enter or Ctrl-C to interrupt the script."
read
clear && cat /etc/motd | grep -v joborun
echo " "
echo "	"
echo "	2	locale"
echo " "
echo " "
echo "	Now we can set the locale of the system."
echo "	edit the '/etc/locale.gen' and enter your choice as found in ' /etc/locale.gen.pacnew '"
echo "	The current default value is 'cat /etc/locale.gen' :"
echo "	"
cat /etc/locale.gen
echo " "
echo "	Run /usr/bin/locale-gen to establish your choice into the system.  You can do it within"
echo "	this sub-shell, enter exit when you are done to continue this script."
zsh
echo "	.... to continue press enter "
read
clear && cat /etc/motd | grep -v joborun
echo " "
echo "	"
echo "	3	timezone "
echo " "
echo "	We will now select the timezone of the system.  Even though that both runit have a"
echo "	boot rc configuration file to do so, and 66 has its boot module, it is good practice"
echo "	to have the traditional unix timezone set before first boot, if runit or 66 miss doing so."
echo "	"
echo "	You will find a file in /etc/timezone where you can enter your choice."
echo "	This is old-school, a practice eliminated by systemd-ish msWin-ish automation."
echo "	The new fashion is to link /etc/localtime to a /usr/share/zoneinfo/   choice such as "
echo "	the default below"
echo "/etc/localtime :"
ls -l /etc/localtime
echo "	enter the sub-shell now and create the link by example root command:"
echo "	 ' # ln -sf /usr/share/zoneinfo/Europe/Madrid /etc/localtime ' "
echo "	for example and verify the results by ' ls -l /etc/localtime ' "
echo "	"
echo "	Again, editing /etc/rc.conf or /etc/runit/rc.conf and filling the fields available"
echo "	for runit should take care of all these, but we can t assume you are not trying "
echo "	something else as init and service supervision, like minit or sinit. "
echo "	"
echo "	exit the shell to return to the script"
zsh
echo "	Enter to continue or Ctrl-C to abort the script"
read
clear && cat /etc/motd | grep -v joborun
echo " "
echo "	"
echo "	4	hostname"
echo "	For Hostname, simply edit /etc/hostname, or fill the /etc/rc.conf, or enter the "
echo "	following command ' # hostname <the systems hostname goes here> ' "
echo "	Your current hostname is: "
hostname
echo "	Enter to continue in a sub-shell or Ctrl-C to abort the script, or exit to exit"
echo "	the sub-shell and return to the script."
read
zsh
clear && cat /etc/motd | grep -v joborun
echo "	"
echo "	"
echo "	5	passwords"
echo "	"
echo "	To set passwords you simply use the passwd command"
echo "	' % passwd '  as root to set roots password"
echo "	' % passwd make ' as root to set user makes password,"
echo "	if you havent added other users or changed the name of 'make', do the same"
echo "	for your other users."
echo "	"
echo "	To do so now, within this sub-shell enter, then execute the commands by entering"
echo "	your password twice when asked, then exit to return to the script."
echo "	You should get the output 'your password has been changed' each time"
echo "	if you executed passwd correctly."
read
zsh
echo "Enter to continue or Ctrl-C to abort the script"
read
clear && cat /etc/motd | grep -v joborun
echo "	"
echo "	"
echo "	6	pacman"
echo "	"
echo "	Your system should be up to date, and to have this done as a first time setup you"
echo "	need to initialize pacman"
echo "	1st command is ' % pacman-key --init ' "
echo "	2nd comman is ' % pacman -Suy ' "
echo "	To do so, do it here, then type exit to continue this script."
zsh
echo "	Enter to continue or Ctrl-C to abort the script"
read
clear && cat /etc/motd | grep -v joborun
echo "	"
echo " "
echo "	7	Kernel choice"
echo "	"
echo "	Choose kernel from joboruns list or from arch by entering on of those as on the list"
echo "	'linux-lts' (5.10 joborun) recommended previous LTS"
echo "	'linux' (5.15 joborun) current linux LTS "
echo "	'linux-lts54' (5.4 joborun older LTS)"
echo "	'core/linux' (arch current) "
echo "	'core/linux-lts' (arch LTS 5.15)"
echo "	'extra/linux-hardened'"
echo "	'extra/linux-zen'"
echo "	"
echo "	The command to add one kernel and its corresponding header would be such as the 3 examples below: "
echo "	'pacman -S linux-lts54 linux-lts54-headers' "
echo "		or	"
echo "	'pacman -S extra/linux-zen extra/linux-zen-headers' "
echo "		or for kernel and no headers"
echo "	'pacman -S linux-lts' "
echo "	To do so, do it here, then type exit to continue this script."
zsh
echo "	Enter to continue or Ctrl-C to abort the script"
clear && cat /etc/motd | grep -v joborun
echo " "
echo "	"
echo "	8	 Bootloader "
echo "	First install the bootloader of choice syslinux, limine, or grub are on our repositories,"
echo "	lilo and lilo-git are on AUR, you can use cower to download and build 'cower -d lilo-git'"
echo "	We will describe a common legacy grub installation here, for anything else go to"
echo "	wiki.archlinux.org and follow the instructions there."
echo "	 Note: if you are not using ext4 as a filesystem, (ie btrfs, xfs, ..), make sure the "
echo "	bootloader of choice supports this filesystem.  If not you may need an EFI solution."
echo "	"
echo "	'% pacman -S grub' "
echo "	Make sure you have installed a kernel properly by looking at the contents of "
echo "	/boot for an initrd image"
echo "	"
echo "	Edit /etc/default/grub if you want specialized configuration, os-prober is pre-installed"
echo "	and configured via hook to run during grub configuration.  OS-prober scans for other"
echo "	installations on the same system, linux/unix or otherwise, and adds an entry on the "
echo "	boot screen after Joborun. It is not 100% reliable but mostly works for other systems."
echo "	"
echo "	'% makedir -p /boot/grub ' "
echo "	'% grub-mkconfig -o /boot/grub/grub.cfg' "
echo "	To install grub s binary in the MBR of disk 'example: /dev/sda ' simply enter the command: "
echo "	'% grub-install /dev/sda' "
echo "	To do so, do it here, then type exit to continue this script."
zsh
echo "	Enter to continue or Ctrl-C to abort the script"
read
clear && cat /etc/motd | grep -v joborun
echo " "
echo "	"
echo "	9	Runit setup"
echo "	It is best to follow the links on our wiki and the links to Void s wiki and/or "
echo "	Artix to learn more about how runit works".
echo "	For now, and for those that know runit, what is found linked to "
echo "	/etc/runit/runsvdir/default directory will be initiated after boot (stage 1)."  
echo "	To deactivate/disable a service you simply remove the link, this stops supervision,"
echo "	doesnt necesseraly end the service, but also look up runsv -d functionality."
echo "	To start a service supervision other than an extra tty (/etc/runit/sv/) look up"
echo "	the service scripts in /usr/lib/runit/sv.  Link a service from there to the above"
echo "	mentioned .../runsvdir/default/ directory and service supervision for this service"
echo "	will immediately start."
echo "	"
echo "	For example:"
echo "	 ' % ln -s /usr/lib/runit/sv/ntpd /etc/runit/runsvdir/default' "
echo "	This example shows how you activate/enable service supervision for"
echo "	ntpd in runit."
echo "	"
echo "	Runit has a minimalist configuration boot script stored in /etc/rc/rc.conf"
echo "	linked for ease of access to /etc/rc.conf.  Simply edit /etc/rc.conf to customize"
echo "	your runit boot settings."
zsh
echo "	Enter to continue or Ctrl-C to abort the script"
read
clear && cat /etc/motd | grep -v joborun
echo "	"
echo "	9.1	add s6 & 66 "
echo "	"
echo "	"
echo "	To add 66 run the add.66 script then setup.66 to setup the system. "
echo "      If you reboot and decide you don t want it, execute rm.66 and "
echo "	s6/66 will be removed "
echo "	Runit will still be there unaffected when you finish playing with 66, and you can"
echo "	boot either system if 66 is installed. "
echo "	"
echo "	It is best you add s6/66 after your first successful boot with runit, unless you"
echo "	are really proficient with both systems."
echo "	After you boot 66 and if you ever need dbus and maybe consolekit for applications"
echo "	see 66-user 66-user-up 66-user-down scripts that will help a minimal setup."
echo "	"
echo "	Enter to continue or Ctrl-C to abort the script"
read
clear && cat /etc/motd | grep -v joborun
echo " "
echo "	"
echo "	Enter to continue or Ctrl-C to abort the script"
read
clear && cat /etc/motd | grep -v joborun
echo " "
echo "	"
echo "	10	Your .xinitrc "
echo " "
echo " 	Whether you use the xinit command, or startx, to start"
echo "	your X session your ~/.xinitrc should have at least one"
echo "	executable command in it."
echo "	   exec jwm &"
echo "	for starting a jwm session "
echo "	   exec openbox-session"
echo "	for starting an openbox session"
echo "	   exec vtwm"
echo "	for starting a vtwm session "
echo "	   exec icewm-session"
echo "	for starting an icewm session "
echo "	"
echo "	To do so, do it here, simply edit as user ~/.xinitrc then type exit to continue this script."
zsh
echo "	"
echo "	Now, next time you login to your shell type xinit or startx and your favorite window"
echo "	manager will start up."
echo "	"
echo "	"
echo "	Enter to finally get to the last step of your configuration."
read
clear && cat /etc/motd | grep -v joborun
echo "	"
echo "	11	Exit chroot and Reboot "
echo "	"
echo "	You should now be able to exit the chroot, reboot the system, and try a true joborun system."
echo "	"
echo "	If you are unsure of everything done here re-run the script as many times as you like,"
echo "	it doesn t hurt anything, it only guides you to do what you have to do.  As user also "
echo "	look at the scripts stored in the home directory ~/ or /home/make  on how to have X wm"
echo "	environment installed if you want it, or have s6 and 66 installed and set up."
echo "	"
echo "	Enter to finally exit"
read
clear && cat /etc/motd | grep -v joborun
echo "	"
echo "	"
echo "	Thank you for trying Joborun"
cat /etc/fstab
echo " ______________________ "
cat /etc/locale.gen
echo " ______________________ "
cat /etc/timezone
echo " ______________________ "
ls -l /etc/localtime
echo " ______________________ "
cat /etc/hostname
echo " ______________________ "
grep -i hostname /etc/rc.conf
echo " ______________________ "
ls -l /boot
echo " ______________________ "
ls -l /boot/grub
echo " ______________________ "
ls -l /etc/runit/runsvdir/default
echo " ______________________ "
echo " This is what the system s configuration looks like now "
echo " Hit enter to see the picture before you started "
read
echo " __________________________________________________ "
cat /tmp/state.0
echo " __________________________________________________ "
