mirror of
https://github.com/arthur-pbty/arthur-os.git
synced 2026-08-01 20:28:16 +02:00
Move NVIDIA env setup to Hyprland Lua
Evaluate NVIDIA session env vars from default/hypr/nvidia.lua during Hyprland startup instead of appending them to each user's envs.lua during setup. This removes the per-user NVIDIA setup script execution while preserving the GSP/non-GSP detection.
This commit is contained in:
@@ -35,6 +35,9 @@ end
|
|||||||
table.insert(kept, 1, bin_dir)
|
table.insert(kept, 1, bin_dir)
|
||||||
hl.env("PATH", table.concat(kept, ":"))
|
hl.env("PATH", table.concat(kept, ":"))
|
||||||
|
|
||||||
|
-- Hardware-specific environment.
|
||||||
|
require("default.hypr.nvidia")
|
||||||
|
|
||||||
hl.config({
|
hl.config({
|
||||||
xwayland = {
|
xwayland = {
|
||||||
force_zero_scaling = true,
|
force_zero_scaling = true,
|
||||||
|
|||||||
@@ -6,6 +6,21 @@ local function shell_quote(value)
|
|||||||
return "'" .. tostring(value):gsub("'", "'\\''") .. "'"
|
return "'" .. tostring(value):gsub("'", "'\\''") .. "'"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
o.shell_quote = shell_quote
|
||||||
|
|
||||||
|
function o.shell_succeeds(command)
|
||||||
|
local ok, _, code = os.execute(command .. " >/dev/null 2>&1")
|
||||||
|
return ok == true or ok == 0 or code == 0
|
||||||
|
end
|
||||||
|
|
||||||
|
function o.cmd_present(command)
|
||||||
|
return o.shell_succeeds("command -v " .. shell_quote(command))
|
||||||
|
end
|
||||||
|
|
||||||
|
function o.cmd_missing(command)
|
||||||
|
return not o.cmd_present(command)
|
||||||
|
end
|
||||||
|
|
||||||
local function command_from(value, description)
|
local function command_from(value, description)
|
||||||
if type(value) ~= "table" then
|
if type(value) ~= "table" then
|
||||||
return value
|
return value
|
||||||
|
|||||||
@@ -0,0 +1,15 @@
|
|||||||
|
local paths = require("default.hypr.paths")
|
||||||
|
|
||||||
|
local nvidia_gsp = paths.omarchy_path .. "/bin/omarchy-hw-nvidia-gsp"
|
||||||
|
local nvidia_without_gsp = paths.omarchy_path .. "/bin/omarchy-hw-nvidia-without-gsp"
|
||||||
|
|
||||||
|
if o.shell_succeeds("lspci | grep -qi nvidia") then
|
||||||
|
if o.shell_succeeds(o.shell_quote(nvidia_gsp)) then
|
||||||
|
hl.env("NVD_BACKEND", "direct")
|
||||||
|
hl.env("LIBVA_DRIVER_NAME", "nvidia")
|
||||||
|
hl.env("__GLX_VENDOR_LIBRARY_NAME", "nvidia")
|
||||||
|
elseif o.shell_succeeds(o.shell_quote(nvidia_without_gsp)) then
|
||||||
|
hl.env("NVD_BACKEND", "egl")
|
||||||
|
hl.env("__GLX_VENDOR_LIBRARY_NAME", "nvidia")
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
envs="$HOME/.config/hypr/envs.lua"
|
|
||||||
[[ -f $envs ]] || exit 0
|
|
||||||
|
|
||||||
if lspci | grep -qi 'nvidia'; then
|
|
||||||
if omarchy-hw-nvidia-gsp && ! grep -q 'NVIDIA (Turing+ with GSP firmware)' "$envs"; then
|
|
||||||
cat >>"$envs" <<'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 omarchy-hw-nvidia-without-gsp && ! grep -q 'NVIDIA (Maxwell/Pascal/Volta without GSP firmware)' "$envs"; then
|
|
||||||
cat >>"$envs" <<'EOF'
|
|
||||||
|
|
||||||
-- NVIDIA (Maxwell/Pascal/Volta without GSP firmware)
|
|
||||||
hl.env("NVD_BACKEND", "egl")
|
|
||||||
hl.env("__GLX_VENDOR_LIBRARY_NAME", "nvidia")
|
|
||||||
EOF
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
@@ -17,7 +17,7 @@ if lspci | grep -qi 'nvidia'; then
|
|||||||
|
|
||||||
omarchy-pkg-add "${PACKAGES[@]}"
|
omarchy-pkg-add "${PACKAGES[@]}"
|
||||||
|
|
||||||
# Per-user Hyprland NVIDIA env vars are handled by nvidia-user.sh.
|
# Per-session Hyprland NVIDIA env vars are handled by default/hypr/nvidia.lua.
|
||||||
|
|
||||||
# Configure modprobe for early KMS
|
# Configure modprobe for early KMS
|
||||||
mkdir -p /etc/modprobe.d
|
mkdir -p /etc/modprobe.d
|
||||||
|
|||||||
@@ -7,4 +7,3 @@ run_logged $OMARCHY_INSTALL/config/hardware/bluetooth-user.sh
|
|||||||
run_logged $OMARCHY_INSTALL/config/hardware/asus/fix-audio-mixer.sh
|
run_logged $OMARCHY_INSTALL/config/hardware/asus/fix-audio-mixer.sh
|
||||||
run_logged $OMARCHY_INSTALL/config/hardware/asus/fix-mic.sh
|
run_logged $OMARCHY_INSTALL/config/hardware/asus/fix-mic.sh
|
||||||
run_logged $OMARCHY_INSTALL/config/hardware/framework/fix-f13-amd-audio-input.sh
|
run_logged $OMARCHY_INSTALL/config/hardware/framework/fix-f13-amd-audio-input.sh
|
||||||
run_logged $OMARCHY_INSTALL/config/hardware/nvidia-user.sh
|
|
||||||
|
|||||||
Reference in New Issue
Block a user