summaryrefslogtreecommitdiff
path: root/configs/profile/root-image/root/customize_root_image.sh
diff options
context:
space:
mode:
Diffstat (limited to 'configs/profile/root-image/root/customize_root_image.sh')
-rwxr-xr-xconfigs/profile/root-image/root/customize_root_image.sh96
1 files changed, 76 insertions, 20 deletions
diff --git a/configs/profile/root-image/root/customize_root_image.sh b/configs/profile/root-image/root/customize_root_image.sh
index 7505d8b..62e7106 100755
--- a/configs/profile/root-image/root/customize_root_image.sh
+++ b/configs/profile/root-image/root/customize_root_image.sh
@@ -1,41 +1,97 @@
#!/bin/bash
-readonly ISO_REPO_DEFINITION="[isorepo]\nSigLevel = Optional TrustAll\nServer = file:///isorepo/"
+readonly DEV_RELEASE=1 # 1 for development builds - 0 for production builds
+readonly REPOS='libre core extra community pcr'
+readonly SYSTEMD_SERVICES_ALL="multi-user.target \
+ pacman-init.service \
+ choose-mirror.service "
+readonly SYSTEMD_SERVICES_GUI="NetworkManager.service"
+readonly DEFAULT_SHELL=/bin/bash
readonly NETINSTALL_MSG="To install Parabola, the system must be connected to the internet."
readonly COMPLETE_MSG="This ISO is capable of installing a complete Parabola system\n\
>>>>without a connection to the internet. If you would like to fetch\n\
>>>>the latest packages from the internet, run the following command\n\
>>>>before beginning the install:\n\
# cp /etc/pacman-online.conf /etc/pacman.conf"
-[ "${enable_offline_install}" == 'false' ] && readonly NETWORK_MSG=${NETINSTALL_MSG} || \
- readonly NETWORK_MSG=${COMPLETE_MSG}
+[ "${enable_offline_install}" == 'false' ] && readonly NETWORK_MOTD_MSG=${NETINSTALL_MSG} || \
+ readonly NETWORK_MOTD_MSG=${COMPLETE_MSG}
+readonly ROOT_SKEL_FILES="/etc/skel/.automated_script.sh \
+ /etc/skel/.bash_logout \
+ /etc/skel/.bash_profile "
+readonly LIVE_USER=parabola
+readonly LIVE_USER_GROUPS="adm,audio,floppy,log,network,rfkill,scanner,storage,optical,power,wheel"
+[ "${enable_offline_install}" == 'true' ] && readonly INSTALL_TYPE="Complete" || \
+ readonly INSTALL_TYPE="NetInstall"
+readonly WELCOME_TITLE="Parabola ${iso_init}/${iso_wm} Edition - (${INSTALL_TYPE})"
set -e -u
+# configure locales
+ln -sf /usr/share/zoneinfo/UTC /etc/localtime
sed -i 's/#\(en_US\.UTF-8\)/\1/' /etc/locale.gen
+sed -i 's/#\(es_ES\.UTF-8\)/\1/' /etc/locale.gen
+sed -i 's/#\(gl_ES\.UTF-8\)/\1/' /etc/locale.gen
+sed -i 's/#\(pt_BR\.UTF-8\)/\1/' /etc/locale.gen
locale-gen
-ln -sf /usr/share/zoneinfo/UTC /etc/localtime
-
-usermod -s /usr/bin/zsh root 2> /dev/null
-cp -aT /etc/skel/ /root/
-
-[ -n "$(id parabola 2> /dev/null)" ] && userdel -r parabola 2> /dev/null
-useradd -m -p "" -g users -G "adm,audio,floppy,log,network,rfkill,scanner,storage,optical,power,wheel" -s /usr/bin/zsh parabola
-
+# configure sudo
chmod 750 /etc/sudoers.d
chmod 440 /etc/sudoers.d/g_wheel
-sed -i "s/#Server/Server/g" /etc/pacman.d/mirrorlist
-if [ "${enable_offline_install}" == 'true' ]
-then echo -e "${ISO_REPO_DEFINITION}" >> /etc/pacman.conf
- mv /etc/pacman.conf /etc/pacman-online.conf
- cp /etc/pacman-offline.conf /etc/pacman.conf
-else rm /etc/pacman-offline.conf
+# configure pacman
+sed -i "s|#Server|Server|g" /etc/pacman.d/mirrorlist
+if [[ "${enable_offline_install}" == 'true' ]]
+then cat /etc/pacman-offline.conf > /etc/pacman-online.conf
+ for repo in ${REPOS}
+ do echo -e "\n[${repo}]\nInclude = /etc/pacman.d/mirrorlist" >> /etc/pacman-online.conf
+ done
+ cp /etc/pacman-offline.conf /etc/pacman.conf
+else cp /usr/share/pacman/defaults/pacman.conf.${arch} /etc/pacman.conf
+ rm /etc/pacman-*.conf
+fi
+
+# configure services
+if [[ "${iso_init}" == 'systemd' ]]
+then systemctl enable ${SYSTEMD_SERVICES_ALL}
+ [[ "${iso_wm}" != 'cli' ]] && systemctl enable ${SYSTEMD_SERVICES_GUI}
fi
-systemctl enable multi-user.target pacman-init.service choose-mirror.service
+# configure root user
+usermod -s ${DEFAULT_SHELL} root 2> /dev/null
+
+# configure CLI login session
+sed -i "s|_EDITION_TITLE_|${iso_title}|" /etc/motd
+sed -i "s|_NETWORK_MOTD_MSG_|${NETWORK_MOTD_MSG}| ; s|^>>>>\(.*\)| \1|g" /etc/motd
+if [[ "${iso_wm}" == 'cli' ]]
+then cp ${ROOT_SKEL_FILES} /root/
+ sed -i "s|_DESKTOP_SESSION_||" /root/.bash_profile
+
+else # configure GUI login session and live user
+ [ -n "$(id ${LIVE_USER} 2> /dev/null)" ] && userdel -r ${LIVE_USER} 2> /dev/null
+ useradd -m -p "" -g users -G "$LIVE_USER_GROUPS" -s ${DEFAULT_SHELL} ${LIVE_USER}
+ if [[ "${iso_init}" == 'systemd' ]]
+ then sed -i "s|--autologin root|--autologin ${LIVE_USER}|" /etc/systemd/system/getty@tty1.service.d/autologin.conf
+ fi
-sed -i "s|_EDITION_TITLE_|${iso_title}|" /etc/motd
-sed -i "s|_NETWORK_MSG_|${NETWORK_MSG}| ; s|^>>>>\(.*\)| \1|g" /etc/motd
+ # configure desktop environment
+ sed -i "s|_EDITION_TITLE_|${WELCOME_TITLE}|" /home/${LIVE_USER}/.config/autostart/autostart.sh
+ sed -i "s|--question|--info|" /home/${LIVE_USER}/.config/autostart/autostart.sh
+ sed -i "s|--cancel-label=.*|\&|" /home/${LIVE_USER}/.config/autostart/autostart.sh
+
+ if [[ "${iso_wm}" == 'lxde' ]]
+ then rm -f /etc/xdg/autostart/octopi-notifier.desktop 2> /dev/null
+ sed -i "s|_DESKTOP_SESSION_|LXDE|" /home/${LIVE_USER}/.bash_profile
+ sed -i "s|_DESKTOP_SESSION_|LXDE|" /home/${LIVE_USER}/.dmrc
+ elif [[ "${iso_wm}" == 'mate' ]]
+ then sed -i "s|_DESKTOP_SESSION_|mate|" /home/${LIVE_USER}/.bash_profile
+ sed -i "s|_DESKTOP_SESSION_|mate|" /home/${LIVE_USER}/.dmrc
+ else echo "invalid \$iso_wm for _DESKTOP_SESSION_ '${iso_wm}'"
+ exit 1
+ fi
+
+ # development builds - set DEV_RELEASE=0 for production builds
+ (($DEV_RELEASE)) && source /root/customize_root_image-dev.sh 2> /dev/null
+fi
+# development builds - set DEV_RELEASE=0 for production builds
+(($DEV_RELEASE)) && rm /root/customize_root_image-dev.sh 2> /dev/null