Skip to content

system76: add Oryx Pro support#1701

Open
radupopa369 wants to merge 1 commit intoNixOS:masterfrom
radupopa369:add-system76-oryp-support
Open

system76: add Oryx Pro support#1701
radupopa369 wants to merge 1 commit intoNixOS:masterfrom
radupopa369:add-system76-oryp-support

Conversation

@radupopa369
Copy link

Summary

This PR adds hardware support for the System76 Oryx Pro laptop series to nixos-hardware.

Hardware Configuration

  • Laptop Model: System76 Oryx Pro
  • CPU: Intel Alder Lake-P (12th gen) with Iris Xe iGPU
  • dGPU: NVIDIA GeForce RTX 3070 Ti Laptop (GA104 - Ampere architecture)
  • Graphics Setup: Hybrid graphics with NVIDIA Optimus PRIME
  • External Display: HDMI output connected directly to NVIDIA GPU

Configuration Details

Key Features

  • NVIDIA PRIME Sync Mode: Enabled by default for stable external display support via HDMI
  • Open Source NVIDIA Kernel Modules: Uses open-source modules (recommended for RTX 30 series)
  • Production NVIDIA Drivers: Configured to use stable production branch
  • Wayland Support: Includes proper environment variables for NVIDIA+Wayland compatibility
  • System76 Firmware: Enables System76-specific hardware support

Bus IDs

  • Intel iGPU: PCI:0:2:0
  • NVIDIA dGPU: PCI:1:0:0

Files Added

  • system76/oryp/default.nix - Main hardware configuration
  • system76/oryp/README.md - Documentation and usage instructions

Testing

  • Configuration has been validated and tested on System76 Oryx Pro with RTX 3070 Ti
  • NVIDIA driver 570.195.03 confirmed working
  • External display support via HDMI verified
  • Wayland desktop environment (KDE Plasma) tested and stable
  • Includes fix for high refresh rate display flickering (60Hz fallback)

Usage

Users can import this configuration with:

{
  imports = [
    <nixos-hardware/system76/oryp>
  ];
}

Notes

  • This configuration uses PRIME Sync mode for reliable HDMI output support
  • For better battery life when not using external displays, users can switch to Offload mode
  • Includes workarounds for high refresh rate display flickering issues
  • Compatible with both X11 and Wayland desktop environments

🤖 Generated with Claude Code

- Add hardware configuration for System76 Oryx Pro laptops
- Supports Intel Alder Lake-P + RTX 3070 Ti configuration
- Includes NVIDIA PRIME sync mode for HDMI output support
- Provides Wayland compatibility settings
- Includes documentation and troubleshooting guide

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
Comment on lines +56 to +71
# Wayland-specific NVIDIA environment variables for better compatibility
environment.sessionVariables = {
# Fix cursor issues on Wayland
WLR_NO_HARDWARE_CURSORS = "1";
# NVIDIA-specific variables for proper rendering
__GLX_VENDOR_LIBRARY_NAME = "nvidia";
GBM_BACKEND = "nvidia-drm";
LIBVA_DRIVER_NAME = "nvidia";
};

# Additional kernel parameters for NVIDIA stability
boot.kernelParams = [
"nvidia-drm.modeset=1"
"nvidia-drm.fbdev=1"
"nvidia.NVreg_PreserveVideoMemoryAllocations=1"
];
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Did you add these settings based on your testing or where they proposed?

package = lib.mkDefault config.boot.kernelPackages.nvidiaPackages.production;

# Use open source kernel modules (recommended for RTX 30 series)
open = lib.mkDefault true;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We do have nvidia generation specific profiles that enable this setting.

modesetting.enable = lib.mkDefault true;

# Use production driver (recommended for stability)
package = lib.mkDefault config.boot.kernelPackages.nvidiaPackages.production;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We usually don't set this for laptops.


hardware = {
# Enable graphics support
graphics.enable = lib.mkDefault true;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the nvidia module already does this?

# - NVIDIA GeForce RTX 3070 Ti Laptop GPU (GA104 - Ampere)
# - Hybrid graphics with HDMI output connected to NVIDIA GPU

services.xserver.videoDrivers = [ "nvidia" ];
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the nvidia module does this.

open = lib.mkDefault true;

# Enable nvidia-settings GUI
nvidiaSettings = lib.mkDefault true;
Copy link
Member

@Mic92 Mic92 Dec 30, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Don't think this is needed. It sounds more like personal preference.

prime = {
# Use sync mode for external display support via HDMI
# Note: This uses more power but enables HDMI output
sync.enable = lib.mkDefault true;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So when you had this disabled, hdmi wouldn't work?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The way the Oryx Pro works is annoying, if the GPU is off (using integrated graphics only) it won't actually pass-through the ports attached to the GPU to the rest of the system. This is an issue with Pop! OS as well (external displays only work in hybrid/compute mode, and not on integrated mode).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants