Skip to content

Commit

Permalink
Extract AMD-GPU from Nvidia, to make it easier to choose either
Browse files Browse the repository at this point in the history
  • Loading branch information
mexisme authored and mergify[bot] committed Feb 6, 2024
1 parent 5a8ed53 commit 6e5cc38
Show file tree
Hide file tree
Showing 4 changed files with 116 additions and 81 deletions.
23 changes: 23 additions & 0 deletions lenovo/yoga/7/14ARH7/amdgpu/default.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Including this file will enable the AMD-GPU driver

{ lib, pkgs, ... }:

let
inherit (lib) mkDefault;

in {
imports = [
../shared.nix
];

# AMD RX680
services.xserver.videoDrivers = mkDefault [ "amdgpu" ];

hardware = {
amdgpu.loadInInitrd = true;
opengl.extraPackages = with pkgs; [
vaapiVdpau
libvdpau-va-gl
];
};
}
95 changes: 14 additions & 81 deletions lenovo/yoga/7/14ARH7/default.nix
Original file line number Diff line number Diff line change
@@ -1,82 +1,15 @@
{ config, lib, pkgs, ... }:

let
inherit (lib) mkDefault mkMerge;

in {
imports = [
../../../../common/cpu/amd
# Better power-savings from AMD PState:
../../../../common/cpu/amd/pstate.nix
../../../../common/gpu/amd
## "prime.nix" loads this, aleady:
# ../../../../common/gpu/nvidia
../../../../common/gpu/nvidia/prime.nix
../../../../common/pc/laptop
../../../../common/pc/laptop/acpi_call.nix
../../../../common/pc/ssd
];

config = mkMerge [
{
# Configure basic system settings:
boot = {
kernelModules = [ "kvm-amd" ];
kernelParams = [
"mem_sleep_default=deep"
"pcie_aspm.policy=powersupersave"

## Supposed to help fix for suspend issues: SSD not correctly working, and Keyboard not responding:
## Not needed for the 6.1+ kernels?
# "iommu=pt"

## Fixes for s2idle:
## https://www.phoronix.com/news/More-s2idle-Rembrandt-Linux
# "acpi.prefer_microsoft_guid=1"
## Appears to have been renamed?
"acpi.prefer_microsoft_dsm_guid=1"
];

blacklistedKernelModules = [ "nouveau" ];
};
}

{
## Graphics settings

## AMD RX680
# services.xserver.videoDrivers = mkDefault [ "amdgpu" ];

# NVIDIA GeForce RTX 3050 Mobile (Ampere)
services.xserver.videoDrivers = mkDefault [ "nvidia" ];

hardware = {
## Enable the Nvidia card, as well as Prime and Offload:
amdgpu.loadInInitrd = true;
opengl.extraPackages = with pkgs; [
vaapiVdpau
libvdpau-va-gl
];

nvidia = {
modesetting.enable = true;
nvidiaSettings = true;

prime = {
offload = {
enable = true;
enableOffloadCmd = true;
};
amdgpuBusId = "PCI:4:0:0";
nvidiaBusId = "PCI:1:0:0";
};

powerManagement = {
enable = true;
# finegrained = true
};
};
};
}
];
# When using from a Flake, you can access these via imports of the attr key, e.g:
#
# imports = [
# nixos-hardware.nixosModules.lenovo-yoga-7-14ARH7.amdgpu
# ];
#
## or:
# imports = [
# nixos-hardware.nixosModules.lenovo-yoga-7-14ARH7.nvidia
# ];

{
amdgpu = import ./amdgpu;
nvidia = import ./nvidia;
}
47 changes: 47 additions & 0 deletions lenovo/yoga/7/14ARH7/nvidia/default.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# Including this file will enable the NVidia driver, and PRIME offload

{ lib, pkgs, ... }:

let
inherit (lib) mkDefault;

in {
imports = [
../shared.nix
## "prime.nix" loads this, aleady:
# ../../../../common/gpu/nvidia
../../../../../common/gpu/nvidia/prime.nix
];

# NVIDIA GeForce RTX 3050 Mobile (Ampere)
services.xserver.videoDrivers = mkDefault [ "nvidia" ];

hardware = {
## Enable the Nvidia card, as well as Prime and Offload:
amdgpu.loadInInitrd = true;
opengl.extraPackages = with pkgs; [
vaapiVdpau
libvdpau-va-gl
];

nvidia = {
modesetting.enable = true;
nvidiaSettings = true;

prime = {
offload = {
enable = true;
enableOffloadCmd = true;
};
amdgpuBusId = "PCI:4:0:0";
nvidiaBusId = "PCI:1:0:0";
};

powerManagement = {
enable = true;
# Doesn't seem to be reliable, yet?
# finegrained = true
};
};
};
}
32 changes: 32 additions & 0 deletions lenovo/yoga/7/14ARH7/shared.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
{ ... }:

{
imports = [
../../../../common/cpu/amd
# Better power-savings from AMD PState:
../../../../common/cpu/amd/pstate.nix
../../../../common/gpu/amd
../../../../common/pc/laptop
../../../../common/pc/laptop/acpi_call.nix
../../../../common/pc/ssd
];

# Configure basic system settings:
boot = {
kernelModules = [ "kvm-amd" ];
kernelParams = [
"mem_sleep_default=deep"
"pcie_aspm.policy=powersupersave"

## Supposed to help fix for suspend issues: SSD not correctly working, and Keyboard not responding:
## Not needed for the 6.1+ kernels?
# "iommu=pt"

## Fixes for s2idle:
## https://www.phoronix.com/news/More-s2idle-Rembrandt-Linux
"acpi.prefer_microsoft_dsm_guid=1"
];

blacklistedKernelModules = [ "nouveau" ];
};
}

0 comments on commit 6e5cc38

Please sign in to comment.