diff options
Diffstat (limited to 'configs/profile/root-image/root/customize_root_image.sh')
-rwxr-xr-x | configs/profile/root-image/root/customize_root_image.sh | 96 |
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 |