mirror of
https://github.com/LukeHagar/omarchy.git
synced 2025-12-07 12:37:45 +00:00
* Change lazyvim and asdcontrol to packages * Remove asdcontrol and lazyvim * Add lazyvim setup * Don't trigger rebuild. We already rebuild later. * Add new pacman.conf after install * Update config to keep mirrors in mirrorlist * Add lazyvim setup back * Make webapp installer work with local images * Update tuis to work offline * Update pacman config situation * Extract the reboot segment into its own file * Explainer * Can't return in executed scripts * Add post-install * Extract the reboot segment into its own file * Fix rebase doubling up * Add run wrapper function for feedback * Redirect output to log * Move gnome updates to first-run * Add theme to first-run * Updat to try to get logging working * Create the file and give permissions * Test gsettings * Revert "Test gsettings" This reverts commit 49c27d319407f6c95fcbb4c5a2646e54b50c9ab4. * Stop logging * Add time outputs to end of logs * Rearrange some scripts to cleanup * Cleanup * Add timing to run script * Don't enable multilib for offline * Add prebuild ruby * Try spinner setup * Prevent exit 1 due to grep not matching * Update limine config to work for USB installs as well * Add offline install to env report * Fix grep pipefailure * Update logs exports to work with subshells * Fix backward logic * Attempt to fix logging again * Export chrootable for subshells * Clean up outputs * Move chrootable up * Source chroot instead * Changes for logging * Center up reboot notice * Update fixed paths * Update trap * Revert reverting precompiled ruby due to issues * Revert "Revert reverting precompiled ruby due to issues" This reverts commit c159e7dc51cfdd2fb750c49c66bc4468e1208446. * Remove junk to cleanup fixed paths now that we have relative * Add git branch check to transition beta to main * Log output * Add time output on summary screen * We don't need sudo here * Add ansi helpers to make code cleaner * Add dry-run helpers for testing * Split out some common / reused items * Add log output function * Use gum log to output cleaner * Cleanup * Update trap with options * Fix reboot and pad it * Cleanup * Add dry-run for testing * Use default $PADDING for gum * More styles * Styles and really exit * Update to new format * Add ansi vars * Update log output to prevent flickering * Fix logo exporting * Trap updates * Add exit handler * Prevent double-trapping * Update traps * Consolidate logic * Update reboot to work in chroot * Eliminate double-guard * Attempt to speed up by removing mkinitcpio hooks * Add multilib for nvidia users * Add back wireless-regdom * Remove dryrun items * Fix to be offline * Set fonts for plymouth to solve freetype2 issue * Required -y to run * Update omarchy-refresh-plymouth to account for limine changes * Update omarchy-refresh-plymouth to account for limine changes (#1575) * Required -y to run * Update omarchy-refresh-plymouth to account for limine changes --------- Co-authored-by: David Heinemeier Hansson <david@hey.com> * Update modes * Remove direct executions of .sh files * Add variable safety * Add omarchy-upload-log * Add broadcome fix for MBP * Prevent printing on screen when rebooting * Make packages list universal * Rename * Remove retry message * Fix packages target * Add system info to upload * Update variable name * Remove unnecessary executable statuses * Remove gesture default * Add bcm4360 fix to install * Add useful debug info * Add OMARCHY_PATH * Only look locally offline * Rename / rearrange files * Export so they're available to subshells * Update for alternate * Rearrange * Log install time if no arch * Add limine to packages list * Update comments * Update sizing method * Update mode switcher * Move icons to be embedded in installer * Set install mode to online * shebang and sudo * Remove deleted branch check * Elim banners * Elim verbosity * Rename LOG_FILE * Multilib on by default * Flip to positive * Switch to gnome-theme.sh for first run * Elim ansi-codes helper * Move guard up to be the first thing that's hit * Extract a couple of functions * Trim * Trim * Move back to trap * Update to single gum file * Just show total * Pulled function to a helper * Extract explaining function * Use complete conditional flows where possible * Reference variable close to its use * Use modern bash conditional syntax * Comment before function * Use a simpler shared exit headline Doesn't matter how we stopped, just that we did * CRs * Keep constants together * Style on comment * Explain QR Code * Modern bash conditional and use lowercase for all local variables * Use bash calculation syntax for numbers * Use calculation syntax where possible * cleanup was not intention revealing enough imo * Spacing * Retry won't produce something different in offline mode * Not needed * Use modern bash conditional style * String-wrapping not needed in [[ ]] * Might as well use constants for all of these * Don't need the wrapping * Move the output saving into where we're working with it * Not needed as long as we just source this * Gum is a helper * Slim down logging setup * Reflect broader scope of work * Everything should live in file * Simpler * Ordering * Style * Better separation of concerns * Stop pretending these are meant to run directly * Move all packaging execution together * No longer used in an offline centric setup * None of these are directly executable any more either * Modern bash conditional * Better name * Explain what's going on * Use modern bash conditional * Use modern bash styule * No need for bashing --------- Co-authored-by: David Heinemeier Hansson <david@hey.com> Co-authored-by: DoppioJP <jakub@doppio.jp>
81 lines
2.7 KiB
Bash
81 lines
2.7 KiB
Bash
# ==============================================================================
|
|
# Hyprland NVIDIA Setup Script for Arch Linux
|
|
# ==============================================================================
|
|
# This script automates the installation and configuration of NVIDIA drivers
|
|
# for use with Hyprland on Arch Linux, following the official Hyprland wiki.
|
|
#
|
|
# Author: https://github.com/Kn0ax
|
|
#
|
|
# ==============================================================================
|
|
|
|
# --- GPU Detection ---
|
|
if [ -n "$(lspci | grep -i 'nvidia')" ]; then
|
|
# --- Driver Selection ---
|
|
# Turing (16xx, 20xx), Ampere (30xx), Ada (40xx), and newer recommend the open-source kernel modules
|
|
if echo "$(lspci | grep -i 'nvidia')" | grep -q -E "RTX [2-9][0-9]|GTX 16"; then
|
|
NVIDIA_DRIVER_PACKAGE="nvidia-open-dkms"
|
|
else
|
|
NVIDIA_DRIVER_PACKAGE="nvidia-dkms"
|
|
fi
|
|
|
|
# Check which kernel is installed and set appropriate headers package
|
|
KERNEL_HEADERS="linux-headers" # Default
|
|
if pacman -Q linux-zen &>/dev/null; then
|
|
KERNEL_HEADERS="linux-zen-headers"
|
|
elif pacman -Q linux-lts &>/dev/null; then
|
|
KERNEL_HEADERS="linux-lts-headers"
|
|
elif pacman -Q linux-hardened &>/dev/null; then
|
|
KERNEL_HEADERS="linux-hardened-headers"
|
|
fi
|
|
|
|
# force package database refresh
|
|
sudo pacman -Syu --noconfirm
|
|
|
|
# Install packages
|
|
PACKAGES_TO_INSTALL=(
|
|
"${KERNEL_HEADERS}"
|
|
"${NVIDIA_DRIVER_PACKAGE}"
|
|
"nvidia-utils"
|
|
"lib32-nvidia-utils"
|
|
"egl-wayland"
|
|
"libva-nvidia-driver" # For VA-API hardware acceleration
|
|
"qt5-wayland"
|
|
"qt6-wayland"
|
|
)
|
|
|
|
sudo pacman -S --needed --noconfirm "${PACKAGES_TO_INSTALL[@]}"
|
|
|
|
# Configure modprobe for early KMS
|
|
echo "options nvidia_drm modeset=1" | sudo tee /etc/modprobe.d/nvidia.conf >/dev/null
|
|
|
|
# Configure mkinitcpio for early loading
|
|
MKINITCPIO_CONF="/etc/mkinitcpio.conf"
|
|
|
|
# Define modules
|
|
NVIDIA_MODULES="nvidia nvidia_modeset nvidia_uvm nvidia_drm"
|
|
|
|
# Create backup
|
|
sudo cp "$MKINITCPIO_CONF" "${MKINITCPIO_CONF}.backup"
|
|
|
|
# Remove any old nvidia modules to prevent duplicates
|
|
sudo sed -i -E 's/ nvidia_drm//g; s/ nvidia_uvm//g; s/ nvidia_modeset//g; s/ nvidia//g;' "$MKINITCPIO_CONF"
|
|
# Add the new modules at the start of the MODULES array
|
|
sudo sed -i -E "s/^(MODULES=\\()/\\1${NVIDIA_MODULES} /" "$MKINITCPIO_CONF"
|
|
# Clean up potential double spaces
|
|
sudo sed -i -E 's/ +/ /g' "$MKINITCPIO_CONF"
|
|
|
|
sudo mkinitcpio -P
|
|
|
|
# Add NVIDIA environment variables to hyprland.conf
|
|
HYPRLAND_CONF="$HOME/.config/hypr/hyprland.conf"
|
|
if [ -f "$HYPRLAND_CONF" ]; then
|
|
cat >>"$HYPRLAND_CONF" <<'EOF'
|
|
|
|
# NVIDIA environment variables
|
|
env = NVD_BACKEND,direct
|
|
env = LIBVA_DRIVER_NAME,nvidia
|
|
env = __GLX_VENDOR_LIBRARY_NAME,nvidia
|
|
EOF
|
|
fi
|
|
fi
|