Hardware/Razer

From NixOS Wiki
Jump to: navigation, search

OpenRazer

OpenRazer is an open-source project to support Razer peripherals, including those found in their laptops. To enable the OpenRazer you need to add the following to your configuration.nix

  hardware.openrazer.enable = true
  environment.systemPackages = with pkgs; [
      openrazer-daemon
   ];

To run the openrazer-daemon, you need to be in the openrazer group.

users.users.<username> = { extraGroups = [ "openrazer" ]; };

To enable a front-end to control the peripherals, add the following to your configuration

  environment.systemPackages = with pkgs; [
      polychromatic
  ];

Razer Blade 15 Advanced (Early 2020 model)

Lid reopen hybernate issue

Upon closing the lid to the laptop and reopening, an issue occurs where the device will intermittently go back into hybernate mode after around 10-30 seconds. Setting the kernel parameter button.lid_init_state=open fixes this issue. The following is an example configuration (working in NixOS 22.05):

  boot.kernelParams = [ "button.lid_init_state=open" ];

Getting the Nvidia card to work properly with external displays

In order to get both the laptop display and external displays working, in the BIOS settings set Chipset > GPU MODE to "Dedicated GPU only".

After setting the GPU MODE to "Dedicated GPU only" in the BIOS, enabling sync mode is necessary in order for both the laptop's display and external display/ports to work properly. Here is an example configuration snippet for NixOS 22.05:

  services.xserver = {
    videoDrivers = [ "nvidia" ];
  };
  hardware.opengl.enable = true;
  hardware.nvidia.package = config.boot.kernelPackages.nvidiaPackages.beta;
  
  hardware.nvidia = {
    powerManagement.enable = true;
    modesetting.enable = true;
    prime = {
      sync.enable = true;
      nvidiaBusId = "PCI:1:0:0";
      intelBusId = "PCI:0:2:0";
    };
  };

Updating your system to use the unstable drivers and daemon

If you are using a new model from razer it probably is not available in the stable packages. But it might be available in the unstable ones.

In your configuration.nix file:

 nixpkgs.config = {
    allowUnfree = true;

    packageOverrides = pkgs: {
      stable = import <nixos-stable> {config = config.nixpkgs.config;};
      unstable = import (fetchTarball "https://github.com/NixOS/nixpkgs/archive/nixos-unstable.tar.gz") { config = config.nixpkgs.config; };
    };
  };

# updates the whole kernel to unstable so you have the correct drivers.
boot.kernelPackages = pkgs.unstable.linuxPackages;

# overrides the openrazer-daemon that the harware.openrazer.enable starts
  nixpkgs.overlays = [
    (final: prev: {
      openrazer-daemon = pkgs.unstable.openrazer-daemon;
    })
  ];

  environment.systemPackages = with pkgs; [
    unstable.polychromatic
# alternatively
#    unstable.razergenie
  ];

Additional Resources

https://discourse.nixos.org/t/razer-blade-15-nvidia-integrated-graphics-on-nixos-issues/23576/6

https://www.reddit.com/r/NixOS/comments/nuclde/how_to_properly_set_up_lidclose_behaviour_on_a/

https://wiki.archlinux.org/title/Razer_Blade