When a VM is detected, vm-specific packages (i.e. 'virtualbox-guest-utils') and vm-necessary services (i.e. 'vboxservice') will be automatically installed and enabled

When 'Nvidia' graphics are detected and running the 'Nvidia.hook' is needed, 'pacman.conf' involved option will be uncommented (activated) and '/etc/pacman.d/hooks/' directory will be created
This commit is contained in:
Jane Doe 2024-02-19 17:50:25 +00:00
parent 8f5bea0416
commit fbe0e926ad

View file

@ -1077,6 +1077,20 @@ ${purple}###${nc} Graphics Setup ${purple}###${nc}
sourcetype="Proprietary"
elif [[ "${hypervisor}" != "none" ]]; then
vendor="Virtual Machine"
case "${hypervisor}" in
kvm)
vmpkgs="spice spice-vdagent spice-protocol spice-gtk qemu-guest-agent"
vm_services="qemu-guest-agent" ;;
vmware)
vmpkgs="open-vm-tools"
vm_services="vmtoolsd vmware-vmblock-fuse" ;;
oracle)
vmpkgs="virtualbox-guest-utils"
vm_services="vboxservice" ;;
microsoft)
vmpkgs="hyperv"
vm_services="hv_fcopy_daemon hv_kvp_daemon hv_vss_daemon"
esac
fi
sleep 0.5
@ -3702,7 +3716,7 @@ ${purple}###${nc} Pacstrap System ${purple}###${nc}
fi
if [[ "${vendor}" == "Virtual Machine" ]]; then
basepkgs="base nano sudo vim "${bootldr_pkgs}" "${fstools}" "${kernel}" "${microcode}" "${devel}""
basepkgs="base nano sudo vim "${bootldr_pkgs}" "${fstools}" "${kernel}" "${microcode}" "${vmpkgs}" "${devel}""
elif [[ "${vendor}" == "Nvidia" ]]; then
basepkgs="base linux-firmware nano sudo vim "${bootldr_pkgs}" "${fstools}" "${kernel}" "${kernel}"-headers "${microcode}" "${vgapkgs}" "${wireless_reg}" "${devel}""
else
@ -3775,7 +3789,7 @@ ${purple}###${nc} Pacstrap System ${purple}###${nc}
11) # NOTE: Custom System:
if [[ "${vendor}" == "Virtual Machine" ]]; then
deskpkgs="base sudo "${bootldr_pkgs}" "${custompkgs}" "${fstools}" "${kernel}" "${microcode}" "${greeter}""
deskpkgs="base sudo "${bootldr_pkgs}" "${custompkgs}" "${fstools}" "${kernel}" "${microcode}" "${vmpkgs}" "${greeter}""
else
deskpkgs="base linux-firmware sudo "${bootldr_pkgs}" "${custompkgs}" "${fstools}" "${kernel}" "${microcode}" "${vgapkgs}" "${wireless_reg}" "${greeter}""
fi ;;
@ -4054,7 +4068,7 @@ SLICK
initrd /${microcode}.img
initrd /initramfs-${kernel}.img
options rw ${boot_opts}" | tee /boot/loader/entries/arch.conf &&
systemctl enable systemd-boot-update ${bluetooth} ${displaymanager} ${network} ${trim}
systemctl enable systemd-boot-update ${bluetooth} ${displaymanager} ${network} ${trim} ${vm_services}
BOOTCTL
elif [[ "${bootloader}" == "2" ]]; then
@ -4065,7 +4079,7 @@ BOOTCTL
-e "/^#GRUB_DISABLE_OS_PROBER=false/s/^#//" \
/etc/default/grub &&
grub-mkconfig -o /boot/grub/grub.cfg &&
systemctl enable ${bluetooth} ${displaymanager} ${network} ${trim}
systemctl enable ${bluetooth} ${displaymanager} ${network} ${trim} ${vm_services}
GRUB
if [[ "${bootloader}" == "2" && "${fs}" == "2" ]]; then
@ -4086,6 +4100,8 @@ NVIDIAGRUB
if [[ "${kernelnmbr}" == "1" ]] || [[ "${kernelnmbr}" == "2" && "${family}" == "1" ]] || [[ "${kernelnmbr}" == "2" && "${family}" == "2" && ${nvdriver} == "2" ]]; then
arch-chroot /mnt <<-NVIDIAHOOK
sed -i "s|#HookDir = /etc/pacman.d/hooks/|HookDir = /etc/pacman.d/hooks/|g" /etc/pacman.conf &&
mkdir -p /etc/pacman.d/hooks/ &&
echo "
[Trigger]
Operation=Install
@ -4258,13 +4274,15 @@ NRG
Defaults editor=/usr/bin/nano
%wheel ALL=(ALL) ALL" | tee /etc/sudoers.d/sudoedits &&
visudo -c /etc/sudoers.d/sudoedits &&
systemctl enable avahi-daemon bluetooth cups ipp-usb NetworkManager rngd sddm systemd-boot-update ufw ${trim}
systemctl enable avahi-daemon bluetooth cups ipp-usb NetworkManager rngd sddm systemd-boot-update ufw ${trim} ${vm_services}
OPTIMIZED_CONF
if [[ "${vgaconf}" == "y" && "${vendor}" == "Nvidia" ]]; then
if [[ "${kernelnmbr}" == "1" ]] || [[ "${kernelnmbr}" == "2" && "${family}" == "1" ]] || [[ "${kernelnmbr}" == "2" && "${family}" == "2" && ${nvdriver} == "2" ]]; then
arch-chroot /mnt <<-NVIDIAHOOK
sed -i "s|#HookDir = /etc/pacman.d/hooks/|HookDir = /etc/pacman.d/hooks/|g" /etc/pacman.conf &&
mkdir -p /etc/pacman.d/hooks/ &&
echo "
[Trigger]
Operation=Install
@ -4347,7 +4365,7 @@ SLICK
initrd /${microcode}.img
initrd /initramfs-${kernel}.img
options rw ${boot_opts}" | tee /boot/loader/entries/arch.conf &&
systemctl enable systemd-boot-update ${customservices} ${trim}
systemctl enable systemd-boot-update ${customservices} ${trim} ${vm_services}
BOOTCTL
elif [[ "${bootloader}" == "2" ]]; then
@ -4360,9 +4378,9 @@ BOOTCTL
grub-mkconfig -o /boot/grub/grub.cfg
GRUB
if [[ -n "${customservices}" || -n "${trim}" ]]; then
if [[ -n "${customservices}" || -n "${trim}" || -n "${vm_services}" ]]; then
arch-chroot /mnt <<-SERVICES
systemctl enable ${customservices} ${trim}
systemctl enable ${customservices} ${trim} ${vm_services}
SERVICES
fi
@ -4384,6 +4402,8 @@ NVIDIAGRUB
if [[ "${kernelnmbr}" == "1" ]] || [[ "${kernelnmbr}" == "2" && "${family}" == "1" ]] || [[ "${kernelnmbr}" == "2" && "${family}" == "2" && ${nvdriver} == "2" ]]; then
arch-chroot /mnt <<-NVIDIAHOOK
sed -i "s|#HookDir = /etc/pacman.d/hooks/|HookDir = /etc/pacman.d/hooks/|g" /etc/pacman.conf &&
mkdir -p /etc/pacman.d/hooks/ &&
echo "
[Trigger]
Operation=Install
@ -4442,6 +4462,8 @@ NVIDIAHOOK
greeternmbr=""
cust_bootopts=""
bluetooth=""
vmpkgs=""
vm_services=""
clear
first_check