diff --git a/stage2/01-sys-tweaks/00-packages b/stage2/01-sys-tweaks/00-packages index cb2b54b..0a000aa 100644 --- a/stage2/01-sys-tweaks/00-packages +++ b/stage2/01-sys-tweaks/00-packages @@ -49,3 +49,5 @@ ntfs-3g pciutils rpi-eeprom raspinfo +unattended-upgrades +apt-listchanges diff --git a/stage2/01-sys-tweaks/01-run.sh b/stage2/01-sys-tweaks/01-run.sh index 46b4c11..5cb650a 100755 --- a/stage2/01-sys-tweaks/01-run.sh +++ b/stage2/01-sys-tweaks/01-run.sh @@ -60,3 +60,8 @@ rm -f "${ROOTFS_DIR}/etc/ssh/"ssh_host_*_key* rm -f "${ROOTFS_DIR}/etc/sudoers.d/010_pi-nopasswd" # Fuck you :) echo "%sudo ALL=(ALL:ALL) ALL" > ${ROOTFS_DIR}/etc/sudoers.d/group + +on_chroot << EOF +echo unattended-upgrades unattended-upgrades/enable_auto_updates boolean true | debconf-set-selections +dpkg-reconfigure -f noninteractive unattended-upgrades +EOF diff --git a/stage2/04-octoprint/01-run.sh b/stage2/04-octoprint/01-run.sh index b6546b1..b0def11 100755 --- a/stage2/04-octoprint/01-run.sh +++ b/stage2/04-octoprint/01-run.sh @@ -3,7 +3,6 @@ install -m 644 files/octoprint.service ${ROOTFS_DIR}/etc/systemd/system/octoprint.service on_chroot << EOF -systemctl set-default multi-user.target if ! pip list | grep -F octoprint; then if [ -d /home/octoprint ]; then cd /home/octoprint || exit 1 diff --git a/stage2/05-utils/00-run.sh b/stage2/05-utils/00-run.sh index 1a1c594..f682730 100755 --- a/stage2/05-utils/00-run.sh +++ b/stage2/05-utils/00-run.sh @@ -12,3 +12,6 @@ ExecStart= ExecStart=-/usr/sbin/agetty --autologin root --noclear %I $TERM EOF +on_chroot << EOF +systemctl set-default multi-user.target +EOF diff --git a/stage2/05-utils/files/octo-config b/stage2/05-utils/files/octo-config index 9ad7a17..cb07ff9 100755 --- a/stage2/05-utils/files/octo-config +++ b/stage2/05-utils/files/octo-config @@ -1,3 +1,117 @@ #!/bin/bash - +change_password () { + local PASSWORD="$(whiptail --title "Change Password" --nocancel --passwordbox "Enter new password for user \"pi\"" 10 50 3>&1 1>&2 2>&3)" + if [[ $? != 0 ]]; then return 1; fi + if [[ "$PASSWORD" == "raspberry" ]]; then + whiptail --title "Change Password" --nocancel --msgbox "That password sucks. Please use a different one :)" 10 50 + change_password + return 0 + fi + if [[ "$(whiptail --nocancel --passwordbox "Confirm new password for user \"pi\"" 10 50 3>&1 1>&2 2>&3)" == "$PASSWORD" ]]; then + if [[ $? != 0 ]]; then return 1; fi + echo -e "pi:$PASSWORD" | chpasswd + else + whiptail --title "Change Password" --nocancel --msgbox "Passwords did not match!" 10 50 + change_password + return 0 + fi + local OCTOPASS="$(cat /dev/urandom | tr -dc _A-Z-a-z-0-9 | head -c20)" + echo -e "octoprint:$OCTOPASS" | chpasswd + local ROOTPASS="$(cat /dev/urandom | tr -dc _A-Z-a-z-0-9 | head -c20)" + echo -e "root:$ROOTPASS" | chpasswd + unset OCTOPASS + unset ROOTPASS + unset PASSWORD +} + +service_select () { + local SERVICE_MENU=$(whiptail --separate-output --nocancel --title "Select services" --checklist "Enable/disable services" 0 0 0 \ + "1" "OctoPrint" $(if [[ -f /etc/systemd/system/multi-user.target.wants/octoprint.service ]]; then echo "ON"; else echo "OFF"; fi) \ + "2" "GUI" $(if [[ $(systemctl get-default) == "graphical.target" ]]; then echo "ON"; else echo "OFF"; fi) \ + "3" "SSH" $(if [[ -f /etc/systemd/system/multi-user.target.wants/ssh.service ]]; then echo "ON"; else echo "OFF"; fi) 3>&1 1>&2 2>&3) + + SERVICE_MENU=($SERVICE_MENU) #Exploderizes it into an array + + local ENABLE_OCTO=false + local ENABLE_GUI=false + local ENABLE_SSH=false + + for i in "${SERVICE_MENU[@]}"; do + case $i in + "1") ENABLE_OCTO=true ;; + "2") ENABLE_GUI=true ;; + "3") ENABLE_SSH=true ;; + esac + done + + if [[ $ENABLE_OCTO == true ]]; then + systemctl enable octoprint + else + systemctl disable octoprint + fi + + if [[ $ENABLE_GUI == true ]]; then + systemctl set-default graphical.target + else + systemctl set-default multi-user.target + fi + + if [[ $ENABLE_SSH == true ]]; then + systemctl enable ssh + else + systemctl disable ssh + fi + + +<< 'EOF' + for ((i = 0; i <= 3; i++)); do + for n in "${SERVICE_MENU[@]}"; do + if [[ $i == $n ]]; then + case $i in + "1") systemctl enable octoprint ;; + "2") systemctl set-default graphical.target ;; + "3") systemctl enable ssh ;; + esac + break + fi + done + case $i in + "1") systemctl disable octoprint ;; + "2") systemctl set-default graphical.target ;; + "3") systemctl disable ssh ;; + esac + done +EOF +} + +screen_timeout() { + local TIMEOUT=$(whiptail --nocancel --title "Screen Timeout" --inputbox "Input your desired screen timeout in seconds.\nEnter \"off\" to disable the screen timeout.\n\nAdding a screen timeout can reduce screen burn in." 11 60 "0" 3>&1 1>&2 2>&3) + cat > /home/pi/.xprofile << EOF + xset s ${TIMEOUT} + xset -dpms + exec openbox-session +EOF +} + +main_menu () { + local MAINMENU=$(whiptail --separate-output --nocancel --title "Pi Setup" --menu "" 10 50 0 \ + "1" "Configure Networking" \ + "2" "Change password for pi" \ + "3" "Configure services" \ + "4" "Configure screen timeout" \ + "5" "Exit" 3>&1 1>&2 2>&3) + + case $MAINMENU in + "1") nmtui; main_menu; return 0;; + "2") service_select; main_menu; return 0;; + "3") change_password; main_menu; return 0;; + "4") screen_timeout; main_menu; return 0;; + "5") return 0;; + esac +} + +main_menu +if whiptail --title "Reboot Confirmation" --yesno "Some changes require a reboot to take effect.\nDo you want to reboot now?" 10 50; then + reboot +fi