diff --git a/continue.sh b/continue.sh deleted file mode 100755 index 7235978..0000000 --- a/continue.sh +++ /dev/null @@ -1,237 +0,0 @@ -#!/bin/bash - -inf() { - echo -e "\e[1m♠ $@\e[0m" -} - -err() { - echo -e "\e[1m\e[31m✗ $@\e[0m" -} - -response="" -prompt() { - printf "\e[1m\e[33m$@ : \e[0m" - read response -} - -# --------------------------------- -yn="" -yesno() { - dialog --title Citrine --yesno "$@" --stdout 10 80 - yn=$(echo "?") -} - -dumptitle="" -dump() { - dialog --title "${dumptitle}" --no-collapse --msgbox "$@" 0 0 -} - -msgdat="" -msgbox(){ - msgdat=$(dialog --title Citrine --inputbox "$@" --stdout 10 80) -} -# -------------------------- - -clear - -# TODO: How might we make a list select of timezones? -TZ="/usr/share/LMAO/XD" -while [[ ! -f $TZ ]]; do - msgbox "Pick a time zone (Format: America/New_York , Europe/London, etc)" - PT="$msgdat" - TZ="/usr/share/zoneinfo/${PT}" -done - -ln -sf $TZ /etc/localtime -inf "Set TZ to ${TZ}" -inf "Syncing hardware offset" -hwclock --systohc - -echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen -echo "LANG=en_US.UTF-8" > /etc/locale.conf - -clear - -# Todo: List-select of locales somehow -prompt "Do you need more locales than just en_US? (y/N)" -echo "MORE=$response" -MORE="$response" - -if [[ "$MORE" == "y" || "$MORE" == "Y" ]]; then - inf "When we open the file, please remove the leading # before any locales you need." - inf "Then, save and exit.\nPress enter." - read - micro /etc/locale.gen -fi - -inf "Generating selected locales." -locale-gen - -echo -echo -inf "en_US was set as system primary." -inf "After install, you can edit /etc/locale.conf to change the primary if desired." -inf "Press enter" -prompt "" - -if [[ -f /keymap ]]; then - inf "You set a custom keymap. We're making that change to the new system, too." - KMP=$(cat /keymap) - rm /keymap - echo "KEYMAP=${KMP}" > /etc/vconsole.conf -fi - -clear -msgbox "Enter the system hostname" -HOSTNAME="$msgdat" -echo ${HOSTNAME} > /etc/hostname -echo "127.0.0.1 localhost" > /etc/hosts - -yesno "Would you like IPV6?" -IPS="$yn" - -if [[ "$IPS" == "0" ]]; then - echo "::1 localhost" >> /etc/hosts -fi -echo "127.0.1.1 ${HOSTNAME}.localdomain ${HOSTNAME}" >> /etc/hosts - -clear -inf "Set a password for root" -done="nope" -while [[ "$done" == "nope" ]]; do - passwd - if [[ "$(echo $?)" == "0" ]]; then - done="yep" - fi -done - -msgbox "Your username" -UN="$msgdat" -useradd -m ${UN} -usermod -aG wheel ${UN} -inf "Set password for ${UN}" -done="nope" -while [[ "$done" == "nope" ]]; do - passwd ${UN} - if [[ "$(echo $?)" == "0" ]]; then - done="yep" - fi -done - -echo >> /etc/sudoers -echo "# Enabled by Crystalinstall" >> /etc/sudoers -echo "%wheel ALL=(ALL) ALL" >> /etc/sudoers - -echo >> /etc/sudoers -echo "# Enabled by Crystalinstall" >> /etc/sudoers -echo "Defaults pwfeedback" >> /etc/sudoers - -if [[ -f /efimode ]]; then - rm /efimode - grub-install --target=x86_64-efi --efi-directory=/efi --bootloader-id=Crystal --removeable -else - DISK=$(cat /diskn) - rm /diskn - grub-install ${DISK} -fi - -grub-mkconfig -o /boot/grub/grub.cfg - -systemctl enable NetworkManager - -pacman-key --init -pacman-key --populate archlinux -pacman-key --populate crystal - - -clear - -yesno "Would you like to install a DE/WM profile?" -echo "DEP=$yn" -DEP="$yn" - -if [[ "$DEP" == "0" ]]; then - - dumptitle="Desktop/WM Choices" - - dump "\ - --- Desktop Environments --- - - Budgie - - Cinnamon - - Deepin - - GNOME - - KDE - - LXDE - - LXQt - - Mate - - Xfce" - - msgbox "DE Choice (please enter exactly)" - echo "DE=$msgdat" - DE="$msgdat" - DM="" - - if [[ "$DE" == "Budgie" ]]; then - pacman -Sy --quiet --noconfirm budgie-desktop gnome - DM="gdm" - elif [[ "$DE" == "Cinnamon" ]]; then - pacman -Sy --quiet --noconfirm cinnamon - DM="gdm" - elif [[ "$DE" == "Deepin" ]]; then - pacman -Sy --quiet --noconfirm deepin deepin-extra - DM="lightdm" - elif [[ "$DE" == "GNOME" ]]; then - pacman -Sy --quiet --noconfirm gnome gnome-extra chrome-gnome-shell - DM="gdm" - elif [[ "$DE" == "KDE" ]]; then - pacman -Sy --quiet --noconfirm plasma kde-applications sddm - DM="sddm" - elif [[ "$DE" == "LXDE" ]]; then - pacman -Sy --quiet --noconfirm lxde - DM="lxdm" - elif [[ "$DE" == "LXQt" ]]; then - pacman -Sy --quiet --noconfirm lxqt breeze-icons xorg - DM="sddm" - elif [[ "$DE" == "Mate" ]]; then - pacman -Sy --quiet --noconfirm mate mate-extra mate-applet-dock mate-applet-streamer - DM="gdm" - elif [[ "$DE" == "Xfce" ]]; then - pacman -Sy --quiet --noconfirm xfce4 xfce4-goodies - DM="sddm" - elif [[ "$DE" == "Cutefish" || "$DE" == "cutefish" ]] ;then - pacman -Sy --quiet --noconfirm cutefish - DM="sddm" - - if [[ "$DM" != "" ]]; then - yesno "Would you like to enable ${DM} for ${DE}?" - useDM="$yn" - if [[ "$useDM" == "0" ]]; then - systemctl enable ${DM} - if [[ "$DE" == "Deepin" ]]; then - sed -i 's/lightdm-gtk-greeter/lightdm-deepin-greeter/g' /etc/lightdm/lightdm.conf - fi - fi - fi -fi - -yesno "Would you like to add more packages?" -MP="$yn" -if [[ "$MP" == "0" ]]; then - yesno "Would you like to use a URL to a package list?" - OL="$yesno" - if [[ "$OL" != "0" ]]; then - msgbox "Package names" - PKGNS="$msgdat" - inf "Installing: $PKGNS" - ame -S ${PKGNS} - else - msgbox "URL to package list" - SRC="$msgdat" - PKGS="$(curl ${SRC})" - for PKG in PKGS; do - ame -S ${PKG} - done - fi -fi - -#inf "Installation complete" diff --git a/make.sh b/make.sh index ce031a7..517ed51 100755 --- a/make.sh +++ b/make.sh @@ -12,6 +12,14 @@ testc() { citrine } +insZen() { + pacman -Sy zenity --noconfirm --needed + chmod +x zenity/*.sh + cp zenity/*.sh /usr/bin + mv /usr/bin/citrine.sh /usr/bin/citrine + mv /usr/bin/citrine.internal.zenity.sh /usr/bin/citrine.internal.zenity +} + if [[ "$1" == "" ]]; then echo "./make.sh install - installs citrine" echo "./make.sh test - (installs) then runs citrine" @@ -20,6 +28,11 @@ fi if [[ "$1" == "install" ]]; then ins +elif [[ "$1" == "install-zenity" ]]; then + insZen +elif [[ "$1" == "test-zenity" ]]; then + insZen + testc elif [[ "$1" == "test" ]]; then ins testc diff --git a/zenity/citrine.internal.sh b/zenity/citrine.internal.sh new file mode 100755 index 0000000..b89b559 --- /dev/null +++ b/zenity/citrine.internal.sh @@ -0,0 +1,505 @@ +#!/bin/bash + +inf() { + echo -e "\e[1m♠ $@\e[0m" +} + +err() { + echo -e "\e[1m\e[31m✗ $@\e[0m" +} + +response="" +prompt() { + printf "\e[1m\e[33m$@ : \e[0m" + read response +} + +# --------------------------------- +yn="" +yesno() { + dialog --title Citrine --yesno "$@" 10 80 + yn=$? +} + +dumptitle="" +dump() { + dialog --title "${dumptitle}" --no-collapse --msgbox "$@" 0 0 +} + +msgdat="" +msgbox(){ + msgdat=$(dialog --title Citrine --inputbox "$@" --stdout 10 80) +} + +pass="" +passbox(){ + pass=$(dialog --title Citrine --insecure --passwordbox "$@" --stdout 10 80) +} +# -------------------------- + +if [[ "$EUID" != "0" ]]; then + err "Run as root" + exit 1 +fi + +inf "Checking pacman keyrings" +pacman-key --init +pacman-key --populate archlinux +pacman-key --populate crystal + +yesno "Do you need a keyboard layout other than QWERTY US?" +KBD="$yn" +echo "KBD=$KBD" + +# TODO: layout select in dialog +if [[ "$KBD" == "0" || "$KBD" == "0" ]]; then + prompt "We're going to show the list of keymaps in less. Do you know how to exit less? (Y/n)" + UL="$response" + if [[ "$UL" == "n" ]]; then + inf "Once we enter less, use arrows to scroll, and q to quit once you've found the right file." + inf "Press enter to go" + read + fi + localectl list-keymaps + prompt "Correct keymap" + KMP="$response" + echo "KMP=$response" + loadkeys ${KMP} +fi + +clear + +yesno "Would you like to partition manually?" +echo "PMODE=$yn" +PMODE="$yn" + +dumptitle="System Disks" +diskdat="$(fdisk -l | grep Disk | grep sectors --color=never)" +dump "$diskdat" + +MANUAL="no" +DISK="" +if [[ "$PMODE" == "0" ]]; then + MANUAL="yes" +else + msgbox "Install target WILL BE FULLY WIPED" + echo "DISK=$msgdat" + DISK="$msgdat" + if ! fdisk -l ${DISK}; then + dumptitle="ERROR" + dump "Seems like $DISK doesn't exist. Did you typo?" + exit 1 + fi +fi + +if [[ $DISK == *"nvme"* ]]; then + inf "Seems like this is an NVME disk. Noting" + NVME="yes" +else + NVME="no" +fi +echo "NVME=$NVME" + +if [[ -d /sys/firmware/efi/efivars ]]; then + inf "Seems like this machine was booted with EFI. Noting" + EFI="yes" +else + EFI="no" +fi +echo "EFI=$EFI" + +dumptitle="Please confirm" +if [[ "$EFI" == "yes" ]]; then + dump "This PC seems to *have* booted with UEFI. Press enter to confirm, or Control+C to cancel" +else + dump "This PC seems to *not* have booted with UEFI. Press enter to aknowledge, or press Control+C if this seems wrong." +fi + +inf "Setting system clock via network" +timedatectl set-ntp true + +if [[ "$MANUAL" == "no" ]]; then + + dumptitle="CAUTION!" + dump "This is your last chance to avoid deleting critical data on $DISK. If you're not sure, press Control+C NOW!" + + echo "Partitioning disk" + if [[ "$EFI" == "yes" ]]; then + parted ${DISK} mklabel gpt --script + parted ${DISK} mkpart fat32 0 300 --script + parted ${DISK} mkpart ext4 300 100% --script + inf "Partitioned ${DISK} as an EFI volume" + else + parted ${DISK} mklabel msdos --script + parted ${DISK} mkpart primary btrfs 512MIB 100% --script + parted ${DISK} mkpart primary ext4 1MIB 512MIB --script + inf "Partitioned ${DISK} as an MBR volume" + fi + + if [[ "$NVME" == "yes" ]]; then + if [[ "$EFI" == "yes" ]]; then + inf "Initializing ${DISK} as NVME EFI" + mkfs.vfat ${DISK}p1 + mkfs.btrfs -f ${DISK}p2 + mount ${DISK}p2 /mnt + cd /mnt + btrfs subvolume create @ + btrfs subvolume create @home + cd / + umount /mnt + mount -o subvol=@ /dev/${DISK}p2 /mnt + mkdir -p /mnt/{boot/efi,home} + mount -o subvol=@home /dev/${DISK}p2 /mnt/home + mount ${DISK}p1 /mnt/boot/efi + else + inf "Initializing ${DISK} as NVME MBR" + mkfs.btrfs -f ${DISK}p1 + mount ${DISK}1 /mnt + cd /mnt + btrfs subvolume create @ + btrfs subvolume create @home + cd / + umount /mnt + mount -o noatime,subvol=@ ${DISK}p1 /mnt + mkdir -p /mnt/{home,boot} + mount -o noatime,subvol=@home ${DISK}p1 /mnt/home + mount ${DISK}p2 /mnt/boot + fi + else + if [[ "$EFI" == "yes" ]]; then + inf "Initializing ${DISK} as EFI" + mkfs.vfat -F32 ${DISK}1 + mkfs.btrfs -f ${DISK}2 + mount ${DISK}2 /mnt + cd /mnt + btrfs subvolume create @ + btrfs subvolume create @home + cd / + umount /mnt + mount -o subvol=@ /dev/${DISK}2 /mnt + mkdir -p /mnt/{boot/efi,home} + mount -o subvol=@home /dev/${DISK}2 /mnt/home + mount ${DISK}1 /mnt/boot/efi + else + inf "Initializing ${DISK} as MBR" + mkfs.btrfs -f ${DISK}1 + mount ${DISK}1 /mnt + cd /mnt + btrfs subvolume create @ + btrfs subvolume create @home + cd / + umount /mnt + mount -o noatime,subvol=@ ${DISK}1 /mnt + mkdir -p /mnt/{home,boot} + mount -o noatime,subvol=@home ${DISK}1 /mnt/home + mount ${DISK}2 /mnt/boot + fi + fi +else + clear + + dumptitle="Read carefully!" + + dump "You have chosen manual partitioning.\ + We're going to drop to a shell for you to partition, but first, PLEASE READ these notes.\ + Before you exit the shell, make sure to format and mount a partition for / at /mnt." + + if [[ "$EFI" == "yes" ]]; then + mkdir -p /mnt/boot/efi + + dump "Additionally, since this machine was booted with UEFI, please make sure to make a 200MB or greater partition\ + of type VFAT and mount it at /mnt/boot/efi" + else + msgbox "Please give me the full path of the device you're planning to partition (needed for bootloader installation later)\ + .. Example: /dev/sda" + DISK="${msgdat}" + fi + + CONFDONE="NOPE" + dumptitle="Citrine" + + while [[ "$CONFDONE" == "NOPE" ]]; do + dump "Press enter to go to a shell. (ZSH)" + zsh + yesno "All set (and partitions mounted?)" + echo "STAT=$yn" + STAT="$yn" + if [[ "$STAT" == "0" ]]; then + + if ! findmnt | grep /mnt; then + err "Are you sure you've mounted the partitions?" + else + CONFDONE="YEP" + fi + fi + done +fi + +inf "Verifying network connection" +ping -c 1 getcryst.al + +if [[ ! "$?" == "0" ]]; then + dumptitle="Error!" + dump "It seems like this system can't reach the internet. Failing here." + umount -l /mnt + exit 1 +fi + +inf "Setting up base Crystal System" + +crystalstrap /mnt base linux linux-firmware systemd-sysvcompat networkmanager man-db man-pages texinfo micro sudo curl archlinux-keyring neofetch btrfs-progs timeshift timeshift-autosnap which +if [[ ! "$?" == "0" ]]; then + inf "CrystalStrap had some error. Retrying." + crystalstrap /mnt base linux linux-firmware systemd-sysvcompat networkmanager man-db man-pages texinfo micro sudo curl archlinux-keyring neofetch btrfs-progs timeshift timeshift-autosnap which +fi + +if [[ "$EFI" == "yes" ]]; then + inf "Installing EFI support packages" + crystalstrap /mnt efibootmgr refind +else + inf "Installing Syslinux bootloader" + crystalstrap /mnt syslinux +fi + +genfstab -U /mnt > /mnt/etc/fstab + +clear + +cd /usr/share/zoneinfo/ +var=$(echo */ | sed 's/\///g' | sed 's/ /" "" "/g') +var=$(echo \"$var\") +loc1=$(dialog --title "Citrine" --menu "Please pick a time zone" 20 100 43 $var "" --stdout) +loc1=$(echo $loc1 | sed 's/"//g') +cd /usr/share/zoneinfo/$loc1 +var1=$(echo * | sed 's/\///g' | sed 's/ /" "" "/g') +var1=$(echo \"$var1\") +loc2=$(dialog --title "Citrine" --menu "Please pick a time zone" 20 100 43 $var1 "" --stdout) +loc2=$(echo $loc1 | sed 's/"//g') +TZ="/usr/share/zoneinfo/$loc1/$loc2" +cd / + +arch-chroot /mnt ln -sf $TZ /etc/localtime +inf "Set TZ to ${TZ}" +inf "Syncing hardware offset" +arch-chroot /mnt hwclock --systohc + +echo "en_US.UTF-8 UTF-8" >> /mnt/etc/locale.gen +echo "LANG=en_US.UTF-8" > /mnt/etc/locale.conf + +clear +yesno "Do you need more locales than just en_US?" +echo "More=$yn" +More="$yn" + +if [[ "$MORE" == "0" ]]; then + msgbox "Preferred editor" + PRGRM="$msgdat" + echo "PGRM=$msgdat" + if [[ -x "$(command -v ${PGRM})" ]]; then + inf "Attempting to install ${PGRM}" + pacman -S ${PGRM} --noconfirm + fi + dumptitle="Read carefully." + dump "When we open the file, please remove the leading # before any locales you need.\ + Then, save and exit." + ${PGRM} /mnt/etc/locale.gen +fi + +inf "Generating selected locales." +arch-chroot /mnt locale-gen + +echo +echo +inf "en_US was set as system primary." +inf "After install, you can edit /etc/locale.conf to change the primary if desired." +inf "Press enter" +prompt "" + +if [[ "$KBD" == "y" || "$KBD" == "Y" ]]; then + echo "KEYMAP=${KMP}" > /mnt/etc/vconsole.conf +fi + +clear +msgbox "Enter the system hostname" +HOSTNAME="$msgdat" +echo ${HOSTNAME} > /mnt/etc/hostname +echo "127.0.0.1 localhost" > /mnt/etc/hosts + +yesno "Would you like IPV6?" +IPS="$yn" + +if [[ "$IPS" == "0" ]]; then + echo "::1 localhost" >> /mnt/etc/hosts +fi +echo "127.0.0.1 ${HOSTNAME}.localdomain ${HOSTNAME}" >> /mnt/etc/hosts + +clear +inf "Set a password for root" +done="nope" +while [[ "$done" == "nope" ]]; do + passbox "Please enter root password" + passInit="$pass" + passbox "Please confirm root password" + passConf="$pass" + if [[ "$passInit" == "$passConf" ]]; then + done="yep" + else + dumptitle "Password error" + dump "Passwords do not match. Please try again." + fi +done +arch-chroot /mnt usermod --password $(echo ${pass} | openssl passwd -1 -stdin) ${UN} + +msgbox "Your username" +UN="$msgdat" +arch-chroot /mnt useradd -m ${UN} +arch-chroot /mnt usermod -aG wheel ${UN} +inf "Set password for ${UN}" +done="nope" +while [[ "$done" == "nope" ]]; do + passbox "Please enter password for ${UN}" + passInit="$pass" + passbox "Please confirm password for ${UN}" + passConf="$pass" + if [[ "$passInit" == "$passConf" ]]; then + done="yep" + else + dumptitle "Password error" + dump "Passwords do not match. Please try again." + fi +done +arch-chroot /mnt usermod --password $(echo ${pass} | openssl passwd -1 -stdin) ${UN} + +echo >> /mnt/etc/sudoers +echo "# Enabled by Crystalinstall (citrine)" >> /mnt/etc/sudoers +echo "%wheel ALL=(ALL) ALL" >> /mnt/etc/sudoers + +if [[ "$EFI" == "yes" ]]; then + root="$(findmnt -n -o SOURCE / | awk 'BEGIN { FS = "/" }; { print $3 }' | sed "s/\[//")" + arch-chroot /mnt refind-install + echo '"Crystal Linux" "rw root=/dev/placeholder rootflags=subvol=@"' > /mnt/boot/refind_linux.conf + sed -i "s/placeholder/$root/" /mnt/boot/refind_linux.conf +else + arch-chroot /mnt curl https://git.getcryst.al/crystal/Syslinux_install_script/raw/branch/master/syslinux-install_update -o /usr/bin/syslinux-install_update + arch-chroot /mnt syslinux-install_update -i -a -m +fi + +arch-chroot /mnt systemctl enable NetworkManager +arch-chroot pacman-key --init +arch-chroot pacman-key --populate archlinux +arch-chroot pacman-key --populate crystal + +clear + +arch-chroot /mnt pacman -Sy --quiet --noconfirm + +while [[ "$DE" == "" ]]; do + menu=$(dialog --title "Citrine" --menu "Select the Desktop Environment you want to install" 12 100 4 "Official" "Our pre-themed desktop environments" "Third Party (supported)" "Third party Desktop Environments that are supported" "Third Party (unsupported)" "Third Party Desktop Environments that aren't supported" "None/DIY" "Install no de from this list" --stdout) + if [[ "$menu" == "Official" ]]; then + DE=$(dialog --title "Citrine" --menu "Please choose the DE you want to install" 12 100 2 "Onyx" "Our custom Desktop Environment based on XFCE" "Onyx tiling" "Our custom Desktop Environment based on xfce but with i3 as the wm" --stdout) + elif [[ "$menu" == "Third Party (supported)" ]]; then + DE=$(dialog --title "Citrine" --menu "Please choose the DE you want to install" 12 100 5 "Gnome" "The Gnome desktop environment" "KDE" "The KDE desktop environment" "Xfce" "The xfce desktop environment" "budgie" "The budgie desktop environment" "Mate" "The Mate desktop environment" --stdout) + elif [[ "$menu" == "Third Party (unsupported)" ]]; then + DE=$(dialog --title "Citrine" --menu "Please choose the DE you want to install" 12 100 2 "Pantheon" "The Pantheon desktop environment from elementaryos" "Enlightenment" "A very DIY desktop environment, refer to archwiki" --stdout) + elif [[ "$menu" == "None/DIY" ]]; then + yesno "Are you sure that you dont want to install any DE?" + if [[ "$yn" == "0" ]]; then + DE="none" + DM="none" + else + DE="" + fi + fi + if [[ "$DE" == "Onyx" ]]; then + #arch-chroot /mnt pacman -S --quiet --noconfirm onyx + #DM="lightdm" + dumptitle="Desktop Environment" + dump "Onyx is not supported yet, please choose another DE" + DE="" + elif [[ "$DE" == "Onyx tiling" ]]; then + #arch-chroot /mnt pacman -S --quiet --noconfirm onyx-tiling + #DM="lightdm" + dumptitle="Desktop Environment" + dump "Onyx is not supported yet, please choose another DE" + DE="" + elif [[ "$DE" == "Gnome" ]]; then + arch-chroot /mnt pacman -S --quiet --noconfirm gnome gnome-extra chrome-gnome-shell + DM="gdm" + elif [[ "$DE" == "KDE" ]]; then + arch-chroot /mnt pacman -S --quiet --noconfirm plasma kde-applications sddm + DM="sddm" + elif [[ "$DE" == "budgie" ]]; then + arch-chroot /mnt pacman -S --quiet --noconfirm budgie-desktop gnome + DM="gdm" + elif [[ "$DE" == "Mate" ]]; then + arch-chroot /mnt pacman -S --quiet --noconfirm mate mate-extra mate-applet-dock mate-applet-streamer + DM="gdm" + elif [[ "$DE" == "Pantheon" ]]; then + arch-chroot /mnt su - ${UN} -c "ame -S gala wingpanel pantheon-applications-menu plank pantheon-geoclue2-agent pantheon-polkit-agent pantheon-print pantheon-settings-daemon lightdm lightdm-pantheon-greeter pantheon-default-settings elementary-icon-theme elementary-wallpapers gtk-theme-elementary ttf-droid ttf-opensans ttf-roboto sound-theme-elementary capnet-assist epiphany pantheon-calculator pantheon-calendar pantheon-camera pantheon-code pantheon-files pantheon-mail pantheon-music pantheon-photos pantheon-screencast pantheon-shortcut-overlay pantheon-terminal pantheon-videos simple-scan pantheon-session pantheon switchboard-plugin-desktop" > /mnt/pantheon-packages.txt + DM="lightdm" + elif [[ "$DE" == "Enlightenment" ]]; then + arch-chroot /mnt pacman -S --quiet --noconfirm enlightenment terminology + elif [[ "$DE" == "Xfce" ]]; then + arch-chroot /mnt pacman -S --quiet --noconfirm xfce4 xfce4-goodies + DM="lightdm" + fi +done + +if [[ "$DM" == "" ]]; then + inf "Your selected DE/WM doesn't have a standard display manager. Enter one of the below names, or leave blank for none" + inf "- gdm" + inf "- sddm" + inf "- lightdm (you'll need a greeter package. See Arch Wiki)" + inf "- (you can type another Arch package name if you have one in mind)" + inf "- [blank] for none" + prompt "" + ND="$response" + echo "ND=$ND" + if [[ "$ND" == "blank" || "$ND" == "none" || "$ND" == "" ]]; then + inf "Ok, we will skip the DM install" + DM="" + else + inf "Ok, we'll install $ND" + DM="$ND" + arch-chroot /mnt pacman -S --quiet --noconfirm $DM + fi +else + if [[ "$DM" != "none" ]]; then + arch-chroot /mnt pacman -S --quiet --noconfirm $DM + fi +fi + +if [[ "$DM" != "" ]]; then + if [[ "$DM" != "none" ]]; then + prompt "Would you like to enable ${DM} for ${DE}? (Y/n)" + useDM="$response" + if [[ "$useDM" != "n" ]]; then + arch-chroot /mnt systemctl enable ${DM} + fi + fi +fi + +prompt "Would you like to add more packages? (Y/n)" +MP="$response" +if [[ "$MP" != "n" ]]; then + prompt "Would you like to use a URL to a package list? (Y/n)" + OL="$response" + if [[ "$OL" == "n" ]]; then + prompt "Write package names" + PKGNS="$response" + inf "Installing: $PKGNS" + arch-chroot /mnt su - ${UN} -c "ame -S ${PKGNS}" + else + prompt "URL to package list" + SRC="$response" + PKGS="$(curl ${SRC})" + for PKG in PKGS; do + arch-chroot /mnt su - ${UN} -c "ame -S ${PKG}" + done + fi +fi + +inf "setting up timeshift" +arch-chroot /mnt timeshift --btrfs + +inf "Installation should now be complete." \ No newline at end of file diff --git a/zenity/citrine.sh b/zenity/citrine.sh new file mode 100755 index 0000000..cf727d8 --- /dev/null +++ b/zenity/citrine.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +sudo script -O /var/log/citrine.log -q -c "citrine.internal.zenity" +sudo cp /var/log/citrine.log /mnt/var/. +sudo echo "!!ZENITY VERSION OF CITRINE USED!!" >> /mnt/var/citrine.log +echo "Run 'reboot' to restart. :)"