Strengthen package install
This commit is contained in:
parent
d033ed7b23
commit
a913cd30b3
@ -5,7 +5,7 @@
|
|||||||
# Some ideas and code reworked from other resources
|
# Some ideas and code reworked from other resources
|
||||||
# AIF, Cnichi, Calamares, Arch Wiki.. Credit where credit is due
|
# AIF, Cnichi, Calamares, Arch Wiki.. Credit where credit is due
|
||||||
|
|
||||||
VER=2.0.73
|
VER=2.0.74
|
||||||
|
|
||||||
# bulk default values {
|
# bulk default values {
|
||||||
|
|
||||||
@ -23,17 +23,21 @@ RUN=/run/archiso/bootmnt/arch/boot # path for live system /boot
|
|||||||
VM="$(dmesg | grep -i hypervisor)" # system running in a virtual machine
|
VM="$(dmesg | grep -i hypervisor)" # system running in a virtual machine
|
||||||
export DIALOGOPTS="--cr-wrap" # see `man dialog`
|
export DIALOGOPTS="--cr-wrap" # see `man dialog`
|
||||||
|
|
||||||
BASE_PKGS="base-devel xorg xorg-drivers sudo git gvfs gtk3 libmad libmatroska "
|
BASE_PKGS="base-devel xorg xorg-drivers sudo git gvfs gtk3 libmad libmatroska tumbler "
|
||||||
BASE_PKGS+="tumbler playerctl pulseaudio pulseaudio-alsa pavucontrol pamixer scrot "
|
BASE_PKGS+="playerctl pulseaudio pulseaudio-alsa pavucontrol pamixer scrot xdg-user-dirs "
|
||||||
BASE_PKGS+="xdg-user-dirs ffmpeg gstreamer gst-libav gst-plugins-base gst-plugins-good"
|
BASE_PKGS+="ffmpeg gstreamer gst-libav gst-plugins-base gst-plugins-good bash-completion "
|
||||||
AL_BASE_PKGS="archlabs-skel-base archlabs-fonts archlabs-themes "
|
|
||||||
AL_BASE_PKGS+="archlabs-icons archlabs-wallpapers archlabs-scripts archlabs-baph"
|
AL_BASE_PKGS="archlabs-icons archlabs-fonts archlabs-themes archlabs-baph "
|
||||||
|
AL_BASE_PKGS+="archlabs-wallpapers archlabs-scripts archlabs-skel-base"
|
||||||
|
|
||||||
WM_BASE_PKGS="arandr archlabs-networkmanager-dmenu nitrogen polkit-gnome "
|
WM_BASE_PKGS="arandr archlabs-networkmanager-dmenu nitrogen polkit-gnome "
|
||||||
WM_BASE_PKGS+="volumeicon xclip exo laptop-detect xdotool compton wmctrl feh "
|
WM_BASE_PKGS+="volumeicon xclip exo laptop-detect xdotool compton wmctrl feh "
|
||||||
WM_BASE_PKGS+="gnome-keyring dunst gsimplecal xfce4-power-manager xfce4-settings"
|
WM_BASE_PKGS+="gnome-keyring dunst gsimplecal xfce4-power-manager xfce4-settings"
|
||||||
|
|
||||||
SYS_MEM="$(awk '/MemTotal/ {print int($2 / 1024) "M"}' /proc/meminfo)"
|
SYS_MEM="$(awk '/MemTotal/ {print int($2 / 1024) "M"}' /proc/meminfo)"
|
||||||
LOCALES="$(awk '/\.UTF-8/ {gsub(/# .*|#/, ""); if ($1) {print $1 " - "}}' /etc/locale.gen)"
|
LOCALES="$(awk '/\.UTF-8/ {gsub(/# .*|#/, ""); if ($1) {print $1 " - "}}' /etc/locale.gen)"
|
||||||
CMAPS="$(find /usr/share/kbd/keymaps -name '*.map.gz' | awk '{gsub(/\.map\.gz|.*\//, ""); print $1 " - "}' | sort)"
|
CMAPS="$(find /usr/share/kbd/keymaps -name '*.map.gz' | awk '{gsub(/\.map\.gz|.*\//, ""); print $1 " - "}' | sort)"
|
||||||
|
|
||||||
[[ $LINES ]] || LINES=$(tput lines)
|
[[ $LINES ]] || LINES=$(tput lines)
|
||||||
[[ $COLUMNS ]] || COLUMNS=$(tput cols)
|
[[ $COLUMNS ]] || COLUMNS=$(tput cols)
|
||||||
|
|
||||||
@ -353,7 +357,7 @@ select_mkuser()
|
|||||||
|
|
||||||
# make sure a username was entered and that the passwords match
|
# make sure a username was entered and that the passwords match
|
||||||
if [[ ${#u} -eq 0 || $u =~ \ |\' || $u =~ [^a-z0-9] ]]; then
|
if [[ ${#u} -eq 0 || $u =~ \ |\' || $u =~ [^a-z0-9] ]]; then
|
||||||
msg "Invalid Username" "\nIncorrect user name.\n\nPlease try again.\n"; u=''
|
msg "Invalid Username" "\nInvalid user name.\n\nPlease try again.\n"; u=''
|
||||||
elif [[ -z $p ]]; then
|
elif [[ -z $p ]]; then
|
||||||
msg "Empty Password" "\nThe user password cannot be left empty.\n\nPlease try again.\n"
|
msg "Empty Password" "\nThe user password cannot be left empty.\n\nPlease try again.\n"
|
||||||
elif [[ "$p" != "$p2" ]]; then
|
elif [[ "$p" != "$p2" ]]; then
|
||||||
@ -399,10 +403,10 @@ select_keymap()
|
|||||||
dlg CMAP menu "Console Keymap" "$_vconsole" $CMAPS || return 1
|
dlg CMAP menu "Console Keymap" "$_vconsole" $CMAPS || return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ $DISPLAY && $TERM != 'linux' ]]; then
|
if [[ $TERM == 'linux' ]]; then
|
||||||
setxkbmap "$KEYMAP" >/dev/null 2>&1
|
|
||||||
else
|
|
||||||
loadkeys "$CMAP" >/dev/null 2>&1
|
loadkeys "$CMAP" >/dev/null 2>&1
|
||||||
|
else
|
||||||
|
setxkbmap "$KEYMAP" >/dev/null 2>&1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
return 0
|
return 0
|
||||||
@ -429,9 +433,6 @@ select_sessions()
|
|||||||
WM_PKGS="${WM_PKGS// / }" # remove double spaces
|
WM_PKGS="${WM_PKGS// / }" # remove double spaces
|
||||||
WM_PKGS="${WM_PKGS# }" # remove leading space
|
WM_PKGS="${WM_PKGS# }" # remove leading space
|
||||||
|
|
||||||
# add archlabs base when choosing any session
|
|
||||||
[[ $WM_PKGS ]] && WM_PKGS+=" $AL_BASE_PKGS"
|
|
||||||
|
|
||||||
for i in $INSTALL_WMS; do
|
for i in $INSTALL_WMS; do
|
||||||
LOGIN_CHOICES+="$i - "
|
LOGIN_CHOICES+="$i - "
|
||||||
[[ ${WM_EXT[$i]} && $WM_PKGS != *"${WM_EXT[$i]}"* ]] && WM_PKGS+=" ${WM_EXT[$i]}"
|
[[ ${WM_EXT[$i]} && $WM_PKGS != *"${WM_EXT[$i]}"* ]] && WM_PKGS+=" ${WM_EXT[$i]}"
|
||||||
@ -1358,13 +1359,15 @@ install_user()
|
|||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
[[ $WM_PKGS == *xfce* ]] && echo 'volumeicon &' >> $MNT/home/$NEWUSER/.xprofile
|
[[ $MYSHELL != 'bash' ]] && rm -f "$MNT/home/$NEWUSER/.bash_profile"
|
||||||
|
[[ $WM_PKGS == *xfce* ]] && echo 'volumeicon &' >> "$MNT/home/$NEWUSER/.xprofile"
|
||||||
|
|
||||||
# remove some commands from ~/.xprofile when using KDE or Gnome as the login session
|
# remove some commands from ~/.xprofile when using KDE or Gnome as the login session
|
||||||
if [[ $LOGIN_WM =~ (startkde|gnome-session) || ($LOGIN_TYPE =~ (lightdm|ly) && $WM_PKGS =~ (plasma|gnome)) ]]; then
|
if [[ $LOGIN_WM =~ (startkde|gnome-session) || ($LOGIN_TYPE != 'xinit' && $WM_PKGS =~ (plasma|gnome)) ]]; then
|
||||||
sed -i '/super/d' $MNT/home/$NEWUSER/.xprofile $MNT/root/.xprofile
|
sed -i '/super/d; /nitrogen/d; /compton/d' "$MNT/home/$NEWUSER/.xprofile" "$MNT/root/.xprofile"
|
||||||
sed -i '/nitrogen/d' $MNT/home/$NEWUSER/.xprofile $MNT/root/.xprofile
|
elif [[ $INSTALL_WMS == 'dwm' ]]; then
|
||||||
sed -i '/compton/d' $MNT/home/$NEWUSER/.xprofile $MNT/root/.xprofile
|
# and dwm
|
||||||
|
sed -i '/super/d; /compton/d' "$MNT/home/$NEWUSER/.xprofile" "$MNT/root/.xprofile"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# create user home directories (Music, Documents, Downloads, etc..)
|
# create user home directories (Music, Documents, Downloads, etc..)
|
||||||
@ -1382,17 +1385,7 @@ install_login()
|
|||||||
rm -rf "$serv" "$MNT/home/$NEWUSER/.xinitrc"
|
rm -rf "$serv" "$MNT/home/$NEWUSER/.xinitrc"
|
||||||
chrun "systemctl enable $LOGIN_TYPE.service" 2>$ERR
|
chrun "systemctl enable $LOGIN_TYPE.service" 2>$ERR
|
||||||
errshow 1 "systemctl enable $LOGIN_TYPE.service"
|
errshow 1 "systemctl enable $LOGIN_TYPE.service"
|
||||||
if [[ $LOGIN_TYPE == 'lightdm' ]]; then
|
${LOGIN_TYPE}_config
|
||||||
cat > $MNT/etc/lightdm/lightdm-gtk-greeter.conf <<- EOF
|
|
||||||
[greeter]
|
|
||||||
default-user-image=/usr/share/icons/ArchLabs-Dark/64x64/places/distributor-logo-archlabs.png
|
|
||||||
background=/usr/share/backgrounds/archlabs/archlabs.jpg
|
|
||||||
theme-name=Adwaita-dark
|
|
||||||
icon-theme-name=Adwaita
|
|
||||||
font-name=DejaVu Sans Mono 11
|
|
||||||
position=30%,end 50%,end
|
|
||||||
EOF
|
|
||||||
fi
|
|
||||||
;;
|
;;
|
||||||
xinit)
|
xinit)
|
||||||
if [[ $INSTALL_WMS ]]; then
|
if [[ $INSTALL_WMS ]]; then
|
||||||
@ -1405,7 +1398,7 @@ install_login()
|
|||||||
sed -i "s/root/${NEWUSER}/g" $serv/autologin.conf
|
sed -i "s/root/${NEWUSER}/g" $serv/autologin.conf
|
||||||
cat > "$MNT/home/$NEWUSER/$LOGINRC" <<- EOF
|
cat > "$MNT/home/$NEWUSER/$LOGINRC" <<- EOF
|
||||||
# automatically run startx when logging in on tty1
|
# automatically run startx when logging in on tty1
|
||||||
[ -z \$DISPLAY ] && [ \$XDG_VTNR -eq 1 ] && exec startx
|
[ -z "\$DISPLAY" ] && [ \$XDG_VTNR -eq 1 ] && startx
|
||||||
EOF
|
EOF
|
||||||
else
|
else
|
||||||
rm -rf $serv
|
rm -rf $serv
|
||||||
@ -1417,28 +1410,29 @@ install_login()
|
|||||||
install_packages()
|
install_packages()
|
||||||
{
|
{
|
||||||
local rmpkg="archlabs-installer "
|
local rmpkg="archlabs-installer "
|
||||||
local inpkg="$BASE_PKGS ${LOGIN_PKGS[$LOGIN_TYPE]} $PACKAGES $USER_PKGS "
|
local inpkg="$PACKAGES $USER_PKGS $AL_BASE_PKGS "
|
||||||
|
|
||||||
case $MYSHELL in zsh) inpkg+="zsh-completions " ;; mksh) inpkg+="mksh " rmpkg+="zsh " ;; bash) inpkg+="bash-completion " rmpkg+="zsh " ;; esac
|
if [[ $MYSHELL == 'zsh' ]]; then
|
||||||
|
inpkg+="zsh-completions "
|
||||||
# using a different kernel, remove the stock one
|
|
||||||
[[ $KERNEL != 'linux' ]] && inpkg+="$KERNEL " rmpkg+="linux "
|
|
||||||
|
|
||||||
# don't install extras on dwm only installs
|
|
||||||
if [[ $INSTALL_WMS != 'dwm' ]]; then
|
|
||||||
# gnome, plasma, and cinnamon have their own superkey bind and ksuperkey conflicts
|
|
||||||
[[ $INSTALL_WMS =~ ^(plasma|gnome|cinnamon)$ ]] || inpkg+="archlabs-ksuperkey "
|
|
||||||
# window manager only packages
|
|
||||||
[[ $INSTALL_WMS =~ (openbox|bspwm|i3-gaps|fluxbox) ]] && inpkg+="$WM_BASE_PKGS "
|
|
||||||
else
|
else
|
||||||
inpkg+="arandr nitrogen polkit-gnome xclip xdotool compton gnome-keyring dunst feh "
|
rmpkg+="zsh "
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# update first to avoid issues
|
[[ $KERNEL != 'linux' ]] && rmpkg+='linux '
|
||||||
chrun "pacman -Syyu --noconfirm"
|
|
||||||
|
if [[ $INSTALL_WMS == 'dwm' ]]; then
|
||||||
|
inpkg+="nitrogen polkit-gnome xclip gnome-keyring dunst feh "
|
||||||
|
else
|
||||||
|
[[ $INSTALL_WMS =~ ^(plasma|gnome|cinnamon)$ ]] || inpkg+="archlabs-ksuperkey "
|
||||||
|
[[ $INSTALL_WMS =~ (openbox|bspwm|i3-gaps|fluxbox) ]] && inpkg+="$WM_BASE_PKGS "
|
||||||
|
fi
|
||||||
|
|
||||||
|
# update and install crucial packages first to avoid issues
|
||||||
|
chrun "pacman -Syyu $KERNEL $BASE_PKGS ${LOGIN_PKGS[$LOGIN_TYPE]} $MYSHELL --noconfirm --needed" 2>$ERR
|
||||||
|
errshow 1 "pacman -Syyu $KERNEL $BASE_PKGS ${LOGIN_PKGS[$LOGIN_TYPE]} $MYSHELL --noconfirm --needed"
|
||||||
|
|
||||||
# remove the packages we don't want on the installed system
|
# remove the packages we don't want on the installed system
|
||||||
[[ $rmpkg ]] && chrun "pacman -Rnsc $rmpkg --noconfirm"
|
chrun "pacman -Rnsc $rmpkg --noconfirm"
|
||||||
|
|
||||||
# reinstalling iputils fixes the network issue for non-root users
|
# reinstalling iputils fixes the network issue for non-root users
|
||||||
chrun "pacman -S iputils $UCODE --noconfirm"
|
chrun "pacman -S iputils $UCODE --noconfirm"
|
||||||
@ -1511,6 +1505,39 @@ install_background()
|
|||||||
trap "kill $BG_PID 2>/dev/null" EXIT
|
trap "kill $BG_PID 2>/dev/null" EXIT
|
||||||
}
|
}
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# display manager config
|
||||||
|
# these are called based on which DM is chosen after it is installed
|
||||||
|
# additional config can be handled here, for now only lightdm has one
|
||||||
|
|
||||||
|
lightdm_config()
|
||||||
|
{
|
||||||
|
cat > $MNT/etc/lightdm/lightdm-gtk-greeter.conf <<- EOF
|
||||||
|
[greeter]
|
||||||
|
default-user-image=/usr/share/icons/ArchLabs-Dark/64x64/places/distributor-logo-archlabs.png
|
||||||
|
background=/usr/share/backgrounds/archlabs/archlabs.jpg
|
||||||
|
theme-name=Adwaita-dark
|
||||||
|
icon-theme-name=Adwaita
|
||||||
|
font-name=DejaVu Sans Mono 11
|
||||||
|
position=30%,end 50%,end
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
ly_config()
|
||||||
|
{
|
||||||
|
:
|
||||||
|
}
|
||||||
|
|
||||||
|
gdm_config()
|
||||||
|
{
|
||||||
|
:
|
||||||
|
}
|
||||||
|
|
||||||
|
sddm_config()
|
||||||
|
{
|
||||||
|
:
|
||||||
|
}
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# bootloader setup
|
# bootloader setup
|
||||||
# prerun_* set up the configs needed before actually running the commands
|
# prerun_* set up the configs needed before actually running the commands
|
||||||
|
Reference in New Issue
Block a user