1#!/bin/bash
2
3# Extra
4pacman -Sy efibootmgr
5grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB
6
7mkdir /etc/pacman.d/
8mkdir /etc/pacman.d/hooks
9echo "" > /etc/pacman.d/hooks/nvidia.hook
10echo "[Trigger]" >> /etc/pacman.d/hooks/nvidia.hook
11echo "Operation=Install" >> /etc/pacman.d/hooks/nvidia.hook
12echo "Operation=Upgrade" >> /etc/pacman.d/hooks/nvidia.hook
13echo "Operation=Remove" >> /etc/pacman.d/hooks/nvidia.hook
14echo "Type=Package" >> /etc/pacman.d/hooks/nvidia.hook
15echo "Target=nvidia-open-dkms" >> /etc/pacman.d/hooks/nvidia.hook
16echo "Target=linux-zen" >> /etc/pacman.d/hooks/nvidia.hook
17echo "Target=linux" >> /etc/pacman.d/hooks/nvidia.hook
18echo "Target=nvidia-open" >> /etc/pacman.d/hooks/nvidia.hook
19echo "Target=nvidia" >> /etc/pacman.d/hooks/nvidia.hook
20echo "" >> /etc/pacman.d/hooks/nvidia.hook
21echo "[Action]" >> /etc/pacman.d/hooks/nvidia.hook
22echo "Description=Updating NVIDIA module in initcpio" >> /etc/pacman.d/hooks/nvidia.hook
23echo "Depends=mkinitcpio" >> /etc/pacman.d/hooks/nvidia.hook
24echo "When=PostTransaction" >> /etc/pacman.d/hooks/nvidia.hook
25echo "NeedsTargets" >> /etc/pacman.d/hooks/nvidia.hook
26echo "Exec=/bin/sh -c 'while read -r trg; do case \$trg in linux*) exit 0; esac; done; /usr/bin/mkinitcpio -P'\n" >> /etc/pacman.d/hooks/nvidia.hook
27echo "Remove kms from the HOOKS array in /etc/mkinitcpio.conf and regenerate the initramfs. This will prevent the initramfs from containing the nouveau module making sure the kernel cannot load it during early boot. The nvidia-utils package contains a file which blacklists the nouveau module once you reboot."
28echo "You can add nvidia, nvidia_modeset, nvidia_uvm and nvidia_drm to the initramfs."
29echo "After all of that, run \"mkinitcpio -P\""
30echo "Then \"exit\""
31echo "and \"reboot\" (don't forget to unplug this usb once you do and select Arch as your first boot option)"
32