diff --git a/README.md b/README.md index d420276..be2a480 100644 --- a/README.md +++ b/README.md @@ -128,6 +128,8 @@ See code for all available configurations. | [Lenovo Legion 5 15arh05h](lenovo/legion/15arh05h) | `` | | [Lenovo Legion 7 Slim 15ach6](lenovo/legion/15ach6) | `` | | [Lenovo Legion 5 Pro 16ach6h](lenovo/legion/16ach6h) | `` | +| [Lenovo Legion 5 Pro 16ach6h (Hybrid)](lenovo/legion/16ach6h/hybrid)| `` | +| [Lenovo Legion 5 Pro 16ach6h (Nvidia)](lenovo/legion/16ach6h/nvidia)| `` | | [Lenovo ThinkPad E14 (AMD)](lenovo/thinkpad/e14/amd) | `` | | [Lenovo ThinkPad E14 (Intel)](lenovo/thinkpad/e14/intel) | `` | | [Lenovo ThinkPad E470](lenovo/thinkpad/e470) | `` | diff --git a/flake.nix b/flake.nix index 5c4f4c9..ac81c51 100644 --- a/flake.nix +++ b/flake.nix @@ -62,6 +62,8 @@ lenovo-legion-15ach6 = import ./lenovo/legion/15ach6; lenovo-legion-15arh05h = import ./lenovo/legion/15arh05h; lenovo-legion-16ach6h = import ./lenovo/legion/16ach6h; + lenovo-legion-16ach6h-hybrid = import ./lenovo/legion/16ach6h/hybrid; + lenovo-legion-16ach6h-nvidia = import ./lenovo/legion/16ach6h/nvidia; lenovo-legion-16ithg6 = import ./lenovo/legion/16ithg6; lenovo-thinkpad = import ./lenovo/thinkpad; lenovo-thinkpad-e14-amd = import ./lenovo/thinkpad/e14/amd; diff --git a/lenovo/legion/16ach6h/README.md b/lenovo/legion/16ach6h/README.md index cf489fa..f8c1190 100644 --- a/lenovo/legion/16ach6h/README.md +++ b/lenovo/legion/16ach6h/README.md @@ -1,3 +1,8 @@ +## Introduction +Due to the introduction of DDG feature, you may toggle DDG frequently, so for the default settings of this laptop, we use "specialization" feature of Nix so that you can easily select the required graphics card driver in the startup menu. +**But It will slow down NixOS evaluation by factor 2 and increase memory usage.** +So if you don't need specialization feature, you can just use hybrid only configuration or nvidia only (DDG only) configuration + ## Setup at the time of testing ``` $ nix-info -m diff --git a/lenovo/legion/16ach6h/default.nix b/lenovo/legion/16ach6h/default.nix index d8149e1..e893231 100644 --- a/lenovo/legion/16ach6h/default.nix +++ b/lenovo/legion/16ach6h/default.nix @@ -1,38 +1,11 @@ -{ config, lib, ... }: +{ ... }: { - imports = [ - ../../../common/cpu/amd - ../../../common/gpu/amd - ../../../common/gpu/nvidia/prime.nix - ../../../common/pc/laptop - ../../../common/pc/laptop/ssd - ./edid - ]; + imports = [ ./hybrid ]; - config = lib.mkMerge [ - { - hardware.amdgpu.loadInInitrd = lib.mkDefault false; - - hardware.nvidia = { - modesetting.enable = lib.mkDefault true; - powerManagement.enable = lib.mkDefault true; - }; - - services.thermald.enable = lib.mkDefault true; - - specialisation.ddg.configuration = { - # This specialisation is for the case where "DDG" (A hardware feature that can enable in bios) is enabled, since the amd igpu is blocked at hardware level and the built-in display is directly connected to the dgpu, we no longer need the amdgpu and prime configuration. - services.xserver.videoDrivers = [ "nvidia" ]; # This will override services.xserver.videoDrivers = lib.mkDefault [ "amdgpu" "nvidia" ]; - hardware.nvidia.prime.offload.enable = false; - }; - } - - (lib.mkIf (config.specialisation != {}) { - hardware.nvidia.prime = { - amdgpuBusId = "PCI:6:0:0"; - nvidiaBusId = "PCI:1:0:0"; - }; - }) - ]; + specialisation.ddg.configuration = { + # This specialisation is for the case where "DDG" (A hardware feature that can enable in bios) is enabled, since the amd igpu is blocked at hardware level and the built-in display is directly connected to the dgpu, we no longer need the amdgpu and prime configuration. + services.xserver.videoDrivers = [ "nvidia" ]; # This will override services.xserver.videoDrivers = lib.mkDefault [ "amdgpu" "nvidia" ]; + hardware.nvidia.prime.offload.enable = false; + }; } \ No newline at end of file diff --git a/lenovo/legion/16ach6h/hybrid/default.nix b/lenovo/legion/16ach6h/hybrid/default.nix new file mode 100644 index 0000000..8a56a48 --- /dev/null +++ b/lenovo/legion/16ach6h/hybrid/default.nix @@ -0,0 +1,28 @@ +{ config, lib, ... }: + +{ + imports = [ + ../../../../common/cpu/amd + ../../../../common/gpu/amd + ../../../../common/gpu/nvidia/prime.nix + ../../../../common/pc/laptop + ../../../../common/pc/laptop/ssd + ../edid + ]; + + hardware = { + amdgpu.loadInInitrd = lib.mkDefault false; + + nvidia = { + modesetting.enable = lib.mkDefault true; + powerManagement.enable = lib.mkDefault true; + + prime = { + amdgpuBusId = "PCI:6:0:0"; + nvidiaBusId = "PCI:1:0:0"; + }; + }; + }; + + services.thermald.enable = lib.mkDefault true; +} \ No newline at end of file diff --git a/lenovo/legion/16ach6h/nvidia/default.nix b/lenovo/legion/16ach6h/nvidia/default.nix new file mode 100644 index 0000000..e54fc20 --- /dev/null +++ b/lenovo/legion/16ach6h/nvidia/default.nix @@ -0,0 +1,7 @@ +{ ... }: + +{ + imports = [ ../hybrid ]; + services.xserver.videoDrivers = [ "nvidia" ]; # This will override services.xserver.videoDrivers = lib.mkDefault [ "amdgpu" "nvidia" ]; + hardware.nvidia.prime.offload.enable = false; +} \ No newline at end of file