install: split and harden hardware config scripts
This commit is contained in:
@@ -4,9 +4,12 @@ if [[ $product_name =~ MacBook[89],1|MacBook1[02],1|MacBookPro13,[123]|MacBookPr
|
|||||||
echo "Detected MacBook with SPI keyboard"
|
echo "Detected MacBook with SPI keyboard"
|
||||||
|
|
||||||
omarchy-pkg-add macbook12-spi-driver-dkms
|
omarchy-pkg-add macbook12-spi-driver-dkms
|
||||||
|
mkdir -p /etc/mkinitcpio.conf.d
|
||||||
if [[ $product_name == "MacBook8,1" ]]; then
|
if [[ $product_name == "MacBook8,1" ]]; then
|
||||||
echo "MODULES=(applespi spi_pxa2xx_platform spi_pxa2xx_pci)" | sudo tee /etc/mkinitcpio.conf.d/macbook_spi_modules.conf >/dev/null
|
echo "MODULES=(applespi spi_pxa2xx_platform spi_pxa2xx_pci)" > \
|
||||||
|
/etc/mkinitcpio.conf.d/macbook_spi_modules.conf
|
||||||
else
|
else
|
||||||
echo "MODULES=(applespi intel_lpss_pci spi_pxa2xx_platform)" | sudo tee /etc/mkinitcpio.conf.d/macbook_spi_modules.conf >/dev/null
|
echo "MODULES=(applespi intel_lpss_pci spi_pxa2xx_platform)" > \
|
||||||
|
/etc/mkinitcpio.conf.d/macbook_spi_modules.conf
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -10,7 +10,8 @@ if [[ $MACBOOK_MODEL =~ MacBook(8,1|9,1|10,1)|MacBookPro13,[123]|MacBookPro14,[1
|
|||||||
if [[ -f $NVME_DEVICE ]]; then
|
if [[ -f $NVME_DEVICE ]]; then
|
||||||
echo "Applying NVMe suspend fix..."
|
echo "Applying NVMe suspend fix..."
|
||||||
|
|
||||||
cat <<EOF | sudo tee /etc/systemd/system/omarchy-nvme-suspend-fix.service >/dev/null
|
mkdir -p /etc/systemd/system
|
||||||
|
cat > /etc/systemd/system/omarchy-nvme-suspend-fix.service <<'EOF'
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=Omarchy NVMe Suspend Fix for MacBook
|
Description=Omarchy NVMe Suspend Fix for MacBook
|
||||||
|
|
||||||
@@ -21,8 +22,7 @@ ExecStart=/bin/bash -c 'echo 0 > /sys/bus/pci/devices/0000\:01\:00.0/d3cold_allo
|
|||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
chrootable_systemctl_enable omarchy-nvme-suspend-fix.service
|
systemctl enable omarchy-nvme-suspend-fix.service
|
||||||
sudo systemctl daemon-reload
|
|
||||||
else
|
else
|
||||||
echo "Warning: NVMe device not found at expected PCI address (0000:01:00.0)"
|
echo "Warning: NVMe device not found at expected PCI address (0000:01:00.0)"
|
||||||
echo "This fix may not be needed for this MacBook model"
|
echo "This fix may not be needed for this MacBook model"
|
||||||
|
|||||||
@@ -12,29 +12,35 @@ if lspci -nn | grep -q "106b:180[12]"; then
|
|||||||
tiny-dfr
|
tiny-dfr
|
||||||
|
|
||||||
# Add user to video group (required for tiny-dfr to access /dev/dri devices)
|
# Add user to video group (required for tiny-dfr to access /dev/dri devices)
|
||||||
sudo usermod -aG video ${USER}
|
usermod -aG video "${OMARCHY_INSTALL_USER:-${USER:-}}"
|
||||||
|
|
||||||
# Enable T2 services
|
# Enable T2 services
|
||||||
sudo systemctl enable t2fanrd.service
|
systemctl enable t2fanrd.service
|
||||||
sudo systemctl enable tiny-dfr.service
|
systemctl enable tiny-dfr.service
|
||||||
|
|
||||||
echo "apple-bce" | sudo tee /etc/modules-load.d/t2.conf >/dev/null
|
mkdir -p /etc/modules-load.d
|
||||||
echo "hci_bcm4377" | sudo tee -a /etc/modules-load.d/t2.conf >/dev/null
|
{
|
||||||
|
echo "apple-bce"
|
||||||
|
echo "hci_bcm4377"
|
||||||
|
} > /etc/modules-load.d/t2.conf
|
||||||
|
|
||||||
echo "MODULES+=(apple-bce usbhid hid_apple hid_generic xhci_pci xhci_hcd)" | sudo tee /etc/mkinitcpio.conf.d/apple-t2.conf >/dev/null
|
mkdir -p /etc/mkinitcpio.conf.d
|
||||||
|
echo "MODULES+=(apple-bce usbhid hid_apple hid_generic xhci_pci xhci_hcd)" > \
|
||||||
|
/etc/mkinitcpio.conf.d/apple-t2.conf
|
||||||
|
|
||||||
cat <<EOF | sudo tee /etc/modprobe.d/brcmfmac.conf >/dev/null
|
mkdir -p /etc/modprobe.d
|
||||||
|
cat > /etc/modprobe.d/brcmfmac.conf <<'EOF'
|
||||||
# Fix for T2 MacBook WiFi connectivity issues
|
# Fix for T2 MacBook WiFi connectivity issues
|
||||||
options brcmfmac feature_disable=0x82000
|
options brcmfmac feature_disable=0x82000
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
sudo mkdir -p /etc/limine-entry-tool.d
|
mkdir -p /etc/limine-entry-tool.d
|
||||||
cat <<EOF | sudo tee /etc/limine-entry-tool.d/t2-mac.conf >/dev/null
|
cat > /etc/limine-entry-tool.d/t2-mac.conf <<'EOF'
|
||||||
# Generated by Omarchy installer for T2 Mac support
|
# Generated by Omarchy installer for T2 Mac support
|
||||||
KERNEL_CMDLINE[default]+=" intel_iommu=on iommu=pt pcie_ports=compat"
|
KERNEL_CMDLINE[default]+=" intel_iommu=on iommu=pt pcie_ports=compat"
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
cat <<EOF | sudo tee /etc/t2fand.conf >/dev/null
|
cat > /etc/t2fand.conf <<'EOF'
|
||||||
[Fan1]
|
[Fan1]
|
||||||
low_temp=55
|
low_temp=55
|
||||||
high_temp=75
|
high_temp=75
|
||||||
|
|||||||
@@ -7,8 +7,8 @@
|
|||||||
# xe.enable_psr=0 knob does not cover Panel Replay.
|
# xe.enable_psr=0 knob does not cover Panel Replay.
|
||||||
|
|
||||||
if omarchy-hw-asus-expertbook-b9406; then
|
if omarchy-hw-asus-expertbook-b9406; then
|
||||||
sudo mkdir -p /etc/limine-entry-tool.d
|
mkdir -p /etc/limine-entry-tool.d
|
||||||
cat <<EOF | sudo tee /etc/limine-entry-tool.d/asus-expertbook-b9406-display.conf >/dev/null
|
cat > /etc/limine-entry-tool.d/asus-expertbook-b9406-display.conf <<'EOF'
|
||||||
# ASUS ExpertBook B9406 (Panther Lake / Xe3) display workaround
|
# ASUS ExpertBook B9406 (Panther Lake / Xe3) display workaround
|
||||||
KERNEL_CMDLINE[default]+=" xe.enable_panel_replay=0"
|
KERNEL_CMDLINE[default]+=" xe.enable_panel_replay=0"
|
||||||
EOF
|
EOF
|
||||||
|
|||||||
@@ -10,8 +10,8 @@
|
|||||||
# Asus UX302LA entry in libinput's shipped 50-system-asus.quirks.
|
# Asus UX302LA entry in libinput's shipped 50-system-asus.quirks.
|
||||||
|
|
||||||
if omarchy-hw-asus-expertbook-b9406; then
|
if omarchy-hw-asus-expertbook-b9406; then
|
||||||
sudo mkdir -p /etc/libinput
|
mkdir -p /etc/libinput
|
||||||
sudo tee /etc/libinput/asus-expertbook-b9406.quirks >/dev/null <<EOF
|
cat > /etc/libinput/asus-expertbook-b9406.quirks <<'EOF'
|
||||||
[ASUS ExpertBook B9406 Touchpad]
|
[ASUS ExpertBook B9406 Touchpad]
|
||||||
MatchBus=i2c
|
MatchBus=i2c
|
||||||
MatchUdevType=touchpad
|
MatchUdevType=touchpad
|
||||||
|
|||||||
@@ -8,8 +8,8 @@
|
|||||||
# but produce no visible change; brightness is effectively binary.
|
# but produce no visible change; brightness is effectively binary.
|
||||||
|
|
||||||
if omarchy-hw-asus-expertbook-b9406 || omarchy-hw-asus-zenbook-ux5406aa; then
|
if omarchy-hw-asus-expertbook-b9406 || omarchy-hw-asus-zenbook-ux5406aa; then
|
||||||
sudo mkdir -p /etc/limine-entry-tool.d
|
mkdir -p /etc/limine-entry-tool.d
|
||||||
cat <<EOF | sudo tee /etc/limine-entry-tool.d/asus-ptl-display-backlight.conf >/dev/null
|
cat > /etc/limine-entry-tool.d/asus-ptl-display-backlight.conf <<'EOF'
|
||||||
# ASUS Panther Lake display backlight fix
|
# ASUS Panther Lake display backlight fix
|
||||||
KERNEL_CMDLINE[default]+=" xe.enable_dpcd_backlight=1"
|
KERNEL_CMDLINE[default]+=" xe.enable_dpcd_backlight=1"
|
||||||
EOF
|
EOF
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
if omarchy-hw-asus-rog; then
|
if omarchy-hw-asus-rog; then
|
||||||
mkdir -p ~/.config/wireplumber/wireplumber.conf.d/
|
mkdir -p ~/.config/wireplumber/wireplumber.conf.d/
|
||||||
cp $OMARCHY_PATH/default/wireplumber/wireplumber.conf.d/alsa-soft-mixer.conf ~/.config/wireplumber/wireplumber.conf.d/
|
cp "$OMARCHY_PATH/default/wireplumber/wireplumber.conf.d/alsa-soft-mixer.conf" ~/.config/wireplumber/wireplumber.conf.d/
|
||||||
rm -rf ~/.local/state/wireplumber/default-routes
|
rm -rf ~/.local/state/wireplumber/default-routes
|
||||||
|
|
||||||
# Unmute the Master control on the ALC285 card (often muted by default)
|
# Unmute the Master control on the ALC285 card (often muted by default)
|
||||||
|
|||||||
@@ -11,8 +11,8 @@
|
|||||||
# so dwt can properly pair it with the keyboard.
|
# so dwt can properly pair it with the keyboard.
|
||||||
|
|
||||||
if omarchy-hw-asus-rog && omarchy-hw-match "GZ302"; then
|
if omarchy-hw-asus-rog && omarchy-hw-match "GZ302"; then
|
||||||
sudo tee /etc/udev/rules.d/99-omarchy-asus-z13-touchpad.rules > /dev/null <<'EOF'
|
mkdir -p /etc/udev/rules.d
|
||||||
|
cat > /etc/udev/rules.d/99-omarchy-asus-z13-touchpad.rules <<'EOF'
|
||||||
ACTION=="add|change", KERNEL=="event*", ATTRS{idVendor}=="0b05", ATTRS{idProduct}=="1a30", ENV{ID_INPUT_TOUCHPAD}=="1", ENV{ID_INPUT_TOUCHPAD_INTEGRATION}="internal"
|
ACTION=="add|change", KERNEL=="event*", ATTRS{idVendor}=="0b05", ATTRS{idProduct}=="1a30", ENV{ID_INPUT_TOUCHPAD}=="1", ENV{ID_INPUT_TOUCHPAD_INTEGRATION}="internal"
|
||||||
EOF
|
EOF
|
||||||
sudo udevadm control --reload-rules
|
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -1,12 +1,4 @@
|
|||||||
# Persist last power state across reboots (default AutoEnable=true overrides it)
|
# Persist last power state across reboots (default AutoEnable=true overrides it)
|
||||||
sudo sed -i 's/^#\?AutoEnable=.*/AutoEnable=false/' /etc/bluetooth/main.conf
|
if [[ -f /etc/bluetooth/main.conf ]]; then
|
||||||
|
sed -i 's/^#\?AutoEnable=.*/AutoEnable=false/' /etc/bluetooth/main.conf
|
||||||
mkdir -p ~/.config/wireplumber/wireplumber.conf.d/
|
fi
|
||||||
cp "$OMARCHY_PATH/default/wireplumber/wireplumber.conf.d/bluetooth-a2dp-autoconnect.conf" ~/.config/wireplumber/wireplumber.conf.d/
|
|
||||||
|
|
||||||
# Quickshell.Bluetooth has no Agent API, so the omarchy.bluetooth plugin
|
|
||||||
# can't answer the auth prompts bluez issues during pair(). bt-agent registers
|
|
||||||
# a NoInputNoOutput agent on the system bus so pair() actually completes.
|
|
||||||
mkdir -p ~/.config/systemd/user/
|
|
||||||
cp "$OMARCHY_PATH/config/systemd/user/bt-agent.service" ~/.config/systemd/user/
|
|
||||||
systemctl --user enable bt-agent.service
|
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
# Ensure that F-keys on Apple-like keyboards (such as Lofree Flow84) are always F-keys
|
# Ensure that F-keys on Apple-like keyboards (such as Lofree Flow84) are always F-keys
|
||||||
if [[ ! -f /etc/modprobe.d/hid_apple.conf ]]; then
|
if [[ ! -f /etc/modprobe.d/hid_apple.conf ]]; then
|
||||||
echo "options hid_apple fnmode=2" | sudo tee /etc/modprobe.d/hid_apple.conf
|
mkdir -p /etc/modprobe.d
|
||||||
|
echo "options hid_apple fnmode=2" > /etc/modprobe.d/hid_apple.conf
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -11,13 +11,13 @@ if omarchy-hw-surface; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Attempting to autodetect required pinctrl module"
|
echo "Attempting to autodetect required pinctrl module"
|
||||||
pinctrl_module=$(lsmod | grep pinctrl_ | cut -f 1 -d" ")
|
pinctrl_module=$(lsmod | grep pinctrl_ | cut -f 1 -d" " || true)
|
||||||
if [[ -z $pinctrl_module ]]; then
|
if [[ -z $pinctrl_module ]]; then
|
||||||
echo "Failed to autodetect pinctrl module."
|
echo "Failed to autodetect pinctrl module."
|
||||||
else
|
else
|
||||||
echo "Detected pinctrl module: $pinctrl_module"
|
echo "Detected pinctrl module: $pinctrl_module"
|
||||||
|
mkdir -p /etc/mkinitcpio.conf.d
|
||||||
|
echo "MODULES=(${pinctrl_module} surface_aggregator surface_aggregator_registry surface_aggregator_hub surface_hid_core surface_hid surface_kbd intel_lpss_pci 8250_dw)" > \
|
||||||
|
/etc/mkinitcpio.conf.d/surface_device_modules.conf
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "MODULES=(${pinctrl_module} surface_aggregator surface_aggregator_registry surface_aggregator_hub surface_hid_core surface_hid surface_kbd intel_lpss_pci 8250_dw)" | sudo tee /etc/mkinitcpio.conf.d/surface_device_modules.conf >/dev/null
|
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -2,5 +2,5 @@
|
|||||||
|
|
||||||
if grep -qi synaptics /proc/bus/input/devices \
|
if grep -qi synaptics /proc/bus/input/devices \
|
||||||
&& ! lsmod | grep -q '^psmouse'; then
|
&& ! lsmod | grep -q '^psmouse'; then
|
||||||
modprobe psmouse synaptics_intertouch=1
|
modprobe psmouse synaptics_intertouch=1
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -6,10 +6,11 @@ if cat /sys/class/dmi/id/sys_vendor 2>/dev/null | grep -qi "TUXEDO\|Slimbook"; t
|
|||||||
# Blacklist the legacy clevo_xsm_wmi module which conflicts with the tuxedo-drivers
|
# Blacklist the legacy clevo_xsm_wmi module which conflicts with the tuxedo-drivers
|
||||||
# clevo_wmi module. When clevo_xsm_wmi loads first, it grabs the Clevo WMI GUIDs,
|
# clevo_wmi module. When clevo_xsm_wmi loads first, it grabs the Clevo WMI GUIDs,
|
||||||
# preventing tuxedo-drivers from initializing the keyboard backlight properly.
|
# preventing tuxedo-drivers from initializing the keyboard backlight properly.
|
||||||
echo "blacklist clevo_xsm_wmi" | sudo tee /etc/modprobe.d/blacklist-clevo-xsm-wmi.conf > /dev/null
|
mkdir -p /etc/modprobe.d
|
||||||
|
echo "blacklist clevo_xsm_wmi" > /etc/modprobe.d/blacklist-clevo-xsm-wmi.conf
|
||||||
|
|
||||||
# Remove any orphaned clevo_xsm_wmi module files not managed by a package
|
# Remove any orphaned clevo_xsm_wmi module files not managed by a package
|
||||||
for f in /lib/modules/*/extra/clevo-xsm-wmi.ko; do
|
for f in /lib/modules/*/extra/clevo-xsm-wmi.ko; do
|
||||||
[ -f "$f" ] && sudo rm "$f"
|
[ -f "$f" ] && rm "$f"
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -1,9 +1,8 @@
|
|||||||
# Allow unprivileged access to the Framework 16 keyboard for RGB control via qmk_hid.
|
# Allow unprivileged access to the Framework 16 keyboard for RGB control via qmk_hid.
|
||||||
|
|
||||||
if omarchy-hw-framework16; then
|
if omarchy-hw-framework16; then
|
||||||
|
mkdir -p /etc/udev/rules.d
|
||||||
if [[ ! -f /etc/udev/rules.d/50-framework16-qmk-hid.rules ]]; then
|
if [[ ! -f /etc/udev/rules.d/50-framework16-qmk-hid.rules ]]; then
|
||||||
sudo cp "$OMARCHY_PATH/default/udev/framework16-qmk-hid.rules" /etc/udev/rules.d/50-framework16-qmk-hid.rules
|
cp -f "$OMARCHY_PATH/default/udev/framework16-qmk-hid.rules" /etc/udev/rules.d/50-framework16-qmk-hid.rules
|
||||||
sudo udevadm control --reload-rules
|
|
||||||
sudo udevadm trigger
|
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -6,7 +6,8 @@
|
|||||||
# This should be removed when Intel fixes the firmware/driver.
|
# This should be removed when Intel fixes the firmware/driver.
|
||||||
|
|
||||||
if lspci -nn | grep -qE '\[8086:(e440|272b)\]'; then
|
if lspci -nn | grep -qE '\[8086:(e440|272b)\]'; then
|
||||||
sudo tee /etc/modprobe.d/iwlwifi-disable-eht.conf <<'EOF'
|
mkdir -p /etc/modprobe.d
|
||||||
|
cat > /etc/modprobe.d/iwlwifi-disable-eht.conf <<'EOF'
|
||||||
# Temporary fix Dell XPS 14/16 on Panther lake
|
# Temporary fix Dell XPS 14/16 on Panther lake
|
||||||
# Disable WiFi 7 (EHT) on Intel BE200/BE211 — broken RX rate adaptation
|
# Disable WiFi 7 (EHT) on Intel BE200/BE211 — broken RX rate adaptation
|
||||||
# Remove this file when fixes land in the iwlwifi EHT data path
|
# Remove this file when fixes land in the iwlwifi EHT data path
|
||||||
|
|||||||
@@ -4,15 +4,15 @@ DROP_IN="/etc/limine-entry-tool.d/intel-panther-lake-fred.conf"
|
|||||||
DEFAULT_LIMINE="/etc/default/limine"
|
DEFAULT_LIMINE="/etc/default/limine"
|
||||||
|
|
||||||
if omarchy-hw-intel-ptl; then
|
if omarchy-hw-intel-ptl; then
|
||||||
if [[ ! -f $DROP_IN ]] || ! grep -q 'fred=on' "$DROP_IN"; then
|
if [[ ! -f "$DROP_IN" ]] || ! grep -q 'fred=on' "$DROP_IN"; then
|
||||||
sudo mkdir -p /etc/limine-entry-tool.d
|
mkdir -p /etc/limine-entry-tool.d
|
||||||
cat <<EOF | sudo tee "$DROP_IN" >/dev/null
|
cat > "$DROP_IN" <<EOF
|
||||||
# Intel Panther Lake FRED support
|
# Intel Panther Lake FRED support
|
||||||
KERNEL_CMDLINE[default]+=" fred=on"
|
KERNEL_CMDLINE[default]+=" fred=on"
|
||||||
EOF
|
EOF
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ -f $DEFAULT_LIMINE ]] && ! grep -q 'fred=on' "$DEFAULT_LIMINE"; then
|
if [[ -f "$DEFAULT_LIMINE" ]] && ! grep -q 'fred=on' "$DEFAULT_LIMINE"; then
|
||||||
sudo tee -a "$DEFAULT_LIMINE" < "$DROP_IN" >/dev/null
|
cat "$DROP_IN" >> "$DEFAULT_LIMINE"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -6,6 +6,6 @@ if omarchy-hw-intel && omarchy-battery-present; then
|
|||||||
cpu_model=$(grep -m1 "^model\s*:" /proc/cpuinfo 2>/dev/null | cut -d: -f2 | tr -d ' ')
|
cpu_model=$(grep -m1 "^model\s*:" /proc/cpuinfo 2>/dev/null | cut -d: -f2 | tr -d ' ')
|
||||||
if [[ "$cpu_model" =~ ^(151|154|170|172|183|186|189|191|204)$ ]]; then
|
if [[ "$cpu_model" =~ ^(151|154|170|172|183|186|189|191|204)$ ]]; then
|
||||||
omarchy-pkg-add intel-lpmd
|
omarchy-pkg-add intel-lpmd
|
||||||
sudo systemctl enable intel_lpmd.service
|
systemctl enable intel_lpmd.service
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -5,12 +5,10 @@ if omarchy-hw-match "XPS" && omarchy-hw-intel-ptl; then
|
|||||||
echo "Detected Dell XPS Panther Lake, installing PTL kernel..."
|
echo "Detected Dell XPS Panther Lake, installing PTL kernel..."
|
||||||
|
|
||||||
omarchy-pkg-add linux-ptl linux-ptl-headers
|
omarchy-pkg-add linux-ptl linux-ptl-headers
|
||||||
for pkg in linux linux-headers; do
|
pacman -Rdd --noconfirm linux linux-headers 2>/dev/null || true
|
||||||
sudo pacman -Rdd --noconfirm "$pkg" 2>/dev/null || true
|
|
||||||
done
|
|
||||||
|
|
||||||
sudo mkdir -p /etc/limine-entry-tool.d
|
mkdir -p /etc/limine-entry-tool.d
|
||||||
cat <<EOF | sudo tee /etc/limine-entry-tool.d/dell-xps-panther-lake.conf >/dev/null
|
cat > /etc/limine-entry-tool.d/dell-xps-panther-lake.conf <<'EOF'
|
||||||
# Only show Panther Lake kernel in boot menu on Dell XPS Panther Lake
|
# Only show Panther Lake kernel in boot menu on Dell XPS Panther Lake
|
||||||
BOOT_ORDER="linux-ptl*, *fallback, Snapshots"
|
BOOT_ORDER="linux-ptl*, *fallback, Snapshots"
|
||||||
EOF
|
EOF
|
||||||
|
|||||||
@@ -4,8 +4,9 @@
|
|||||||
if omarchy-hw-intel; then
|
if omarchy-hw-intel; then
|
||||||
# Check if Sandy Bridge or newer (model >= 42). Sandy Bridge: model 42 (mobile), 45 (desktop)
|
# Check if Sandy Bridge or newer (model >= 42). Sandy Bridge: model 42 (mobile), 45 (desktop)
|
||||||
cpu_model=$(grep -m1 "^model\s*:" /proc/cpuinfo 2>/dev/null | cut -d: -f2 | tr -d ' ')
|
cpu_model=$(grep -m1 "^model\s*:" /proc/cpuinfo 2>/dev/null | cut -d: -f2 | tr -d ' ')
|
||||||
|
cpu_model=${cpu_model:-0}
|
||||||
if ((cpu_model >= 42)) && omarchy-battery-present; then
|
if ((cpu_model >= 42)) && omarchy-battery-present; then
|
||||||
omarchy-pkg-add thermald
|
omarchy-pkg-add thermald
|
||||||
sudo systemctl enable thermald
|
systemctl enable thermald.service
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -4,7 +4,8 @@
|
|||||||
# Reference: https://wiki.archlinux.org/title/Lenovo_Yoga_9i_2022_(14AiPI7)
|
# Reference: https://wiki.archlinux.org/title/Lenovo_Yoga_9i_2022_(14AiPI7)
|
||||||
|
|
||||||
if omarchy-hw-match "Yoga Pro 7 14IAH10"; then
|
if omarchy-hw-match "Yoga Pro 7 14IAH10"; then
|
||||||
sudo tee /etc/modprobe.d/lenovo-yoga-pro7-bass.conf <<'EOF'
|
mkdir -p /etc/modprobe.d
|
||||||
|
cat > /etc/modprobe.d/lenovo-yoga-pro7-bass.conf <<'EOF'
|
||||||
options snd-sof-intel-hda-generic hda_model=alc287-yoga9-bass-spk-pin
|
options snd-sof-intel-hda-generic hda_model=alc287-yoga9-bass-spk-pin
|
||||||
EOF
|
EOF
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -1,49 +1,33 @@
|
|||||||
if lspci | grep -qi 'nvidia'; then
|
if lspci | grep -qi 'nvidia'; then
|
||||||
# Check which kernel is installed and set appropriate headers package
|
# Check which kernel is installed and set appropriate headers package
|
||||||
KERNEL_HEADERS="$(pacman -Qqs '^linux(-zen|-lts|-hardened)?$' | head -1)-headers"
|
KERNEL_PACKAGE=$(pacman -Qqs '^linux(-zen|-lts|-hardened|-t2|-ptl)?$' | head -1 || true)
|
||||||
|
[[ -n $KERNEL_PACKAGE ]] && omarchy-pkg-add "$KERNEL_PACKAGE-headers"
|
||||||
|
|
||||||
if omarchy-hw-nvidia-gsp; then
|
if omarchy-hw-nvidia-gsp; then
|
||||||
PACKAGES=(nvidia-open-dkms nvidia-utils lib32-nvidia-utils libva-nvidia-driver)
|
PACKAGES=(nvidia-open-dkms nvidia-utils lib32-nvidia-utils libva-nvidia-driver)
|
||||||
GPU_ARCH="turing_plus"
|
|
||||||
elif omarchy-hw-nvidia-without-gsp; then
|
elif omarchy-hw-nvidia-without-gsp; then
|
||||||
PACKAGES=(nvidia-580xx-dkms nvidia-580xx-utils lib32-nvidia-580xx-utils)
|
PACKAGES=(nvidia-580xx-dkms nvidia-580xx-utils lib32-nvidia-580xx-utils)
|
||||||
GPU_ARCH="maxwell_pascal_volta"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Bail if no supported GPU
|
# Bail if no supported GPU
|
||||||
if [[ -z ${PACKAGES+x} ]]; then
|
if [[ -z ${PACKAGES+x} ]]; then
|
||||||
echo "No compatible driver for your NVIDIA GPU. See: https://wiki.archlinux.org/title/NVIDIA"
|
echo "No compatible driver for your NVIDIA GPU. See: https://wiki.archlinux.org/title/NVIDIA"
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
omarchy-pkg-add "$KERNEL_HEADERS" "${PACKAGES[@]}"
|
omarchy-pkg-add "${PACKAGES[@]}"
|
||||||
|
|
||||||
|
# Per-user Hyprland NVIDIA env vars are handled by nvidia-user.sh.
|
||||||
|
|
||||||
# Configure modprobe for early KMS
|
# Configure modprobe for early KMS
|
||||||
sudo tee /etc/modprobe.d/nvidia.conf <<EOF >/dev/null
|
mkdir -p /etc/modprobe.d
|
||||||
|
cat > /etc/modprobe.d/nvidia.conf <<'EOF'
|
||||||
options nvidia_drm modeset=1
|
options nvidia_drm modeset=1
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
# Configure mkinitcpio for early loading
|
# Configure mkinitcpio for early loading
|
||||||
sudo tee /etc/mkinitcpio.conf.d/nvidia.conf <<EOF >/dev/null
|
mkdir -p /etc/mkinitcpio.conf.d
|
||||||
|
cat > /etc/mkinitcpio.conf.d/nvidia.conf <<'EOF'
|
||||||
MODULES+=(nvidia nvidia_modeset nvidia_uvm nvidia_drm)
|
MODULES+=(nvidia nvidia_modeset nvidia_uvm nvidia_drm)
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
# Add NVIDIA environment variables based on GPU architecture
|
|
||||||
if [[ $GPU_ARCH = "turing_plus" ]]; then
|
|
||||||
# Turing+ (RTX 20xx, GTX 16xx, and newer) with GSP firmware support
|
|
||||||
cat >>"$HOME/.config/hypr/envs.lua" <<'EOF'
|
|
||||||
|
|
||||||
-- NVIDIA (Turing+ with GSP firmware)
|
|
||||||
hl.env("NVD_BACKEND", "direct")
|
|
||||||
hl.env("LIBVA_DRIVER_NAME", "nvidia")
|
|
||||||
hl.env("__GLX_VENDOR_LIBRARY_NAME", "nvidia")
|
|
||||||
EOF
|
|
||||||
elif [[ $GPU_ARCH = "maxwell_pascal_volta" ]]; then
|
|
||||||
# Maxwell/Pascal/Volta (GTX 9xx/10xx, GT 10xx, Quadro P/M/GV, MX series, Titan X/Xp/V) lack GSP firmware
|
|
||||||
cat >>"$HOME/.config/hypr/envs.lua" <<'EOF'
|
|
||||||
|
|
||||||
-- NVIDIA (Maxwell/Pascal/Volta without GSP firmware)
|
|
||||||
hl.env("NVD_BACKEND", "egl")
|
|
||||||
hl.env("__GLX_VENDOR_LIBRARY_NAME", "nvidia")
|
|
||||||
EOF
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -1,33 +1,24 @@
|
|||||||
# First check that wireless-regdb is there
|
# Persist wireless regulatory domain based on the target timezone. Install is
|
||||||
if [[ -f "/etc/conf.d/wireless-regdom" ]]; then
|
# followed by reboot, so don't mutate live Wi-Fi state with `iw reg set`.
|
||||||
unset WIRELESS_REGDOM
|
regdom_file=/etc/conf.d/wireless-regdom
|
||||||
. /etc/conf.d/wireless-regdom
|
[[ -f $regdom_file ]] || exit 0
|
||||||
|
|
||||||
|
if grep -q '^WIRELESS_REGDOM=' "$regdom_file"; then
|
||||||
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# If the region is already set, we're done
|
timezone=""
|
||||||
if [[ ! -n ${WIRELESS_REGDOM} ]]; then
|
if [[ -e /etc/localtime ]]; then
|
||||||
# Get the current timezone
|
timezone=$(readlink -f /etc/localtime || true)
|
||||||
if [[ -e "/etc/localtime" ]]; then
|
timezone=${timezone#/usr/share/zoneinfo/}
|
||||||
TIMEZONE=$(readlink -f /etc/localtime)
|
fi
|
||||||
TIMEZONE=${TIMEZONE#/usr/share/zoneinfo/}
|
|
||||||
|
country="${timezone%%/*}"
|
||||||
# Some timezones are formatted with the two letter country code at the start
|
zone_tab=/usr/share/zoneinfo/zone.tab
|
||||||
COUNTRY="${TIMEZONE%%/*}"
|
if [[ ! $country =~ ^[A-Z]{2}$ && -n $timezone && -f $zone_tab ]]; then
|
||||||
|
country=$(awk -v tz="$timezone" '$3 == tz {print $1; exit}' "$zone_tab")
|
||||||
# If we don't have a two letter country, get it from the timezone table
|
fi
|
||||||
if [[ ! $COUNTRY =~ ^[A-Z]{2}$ ]] && [[ -f /usr/share/zoneinfo/zone.tab ]]; then
|
|
||||||
COUNTRY=$(awk -v tz="$TIMEZONE" '$3 == tz {print $1; exit}' /usr/share/zoneinfo/zone.tab)
|
if [[ $country =~ ^[A-Z]{2}$ ]]; then
|
||||||
fi
|
echo "WIRELESS_REGDOM=\"$country\"" >> "$regdom_file"
|
||||||
|
|
||||||
# Check if we have a two letter country code
|
|
||||||
if [[ $COUNTRY =~ ^[A-Z]{2}$ ]]; then
|
|
||||||
# Append it to the wireless-regdom conf file that is used at boot
|
|
||||||
echo "WIRELESS_REGDOM=\"$COUNTRY\"" | sudo tee -a /etc/conf.d/wireless-regdom >/dev/null
|
|
||||||
|
|
||||||
# Also set it one off now
|
|
||||||
if command -v iw &>/dev/null; then
|
|
||||||
sudo iw reg set ${COUNTRY}
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
|
|||||||
Reference in New Issue
Block a user