Maximum Refresh Rate not appearing

I have a MSI MAG 275QF monitor, it is 1440p at 180hz. On Arch Linux I had no issues with setting my refresh rate using this snipped in my hyprland.conf:

monitor=DP-4,2560x1440@180,0x0,1

monitor=HDMI-A-2,1920x1080@74.97,-1920x0,1

But ever since switching to nix if I set the refresh rate above 129.8hz the monitor drops signal, requiring a reboot to fix. For the life of me I cannot figure out how to fix this. Here are a few snippets to hopefully fill you in on my whole system info.

[macaw@Helios:~]$ fastfetch --logo none
macaw@Helios

OS: NixOS 25.11 (Xantusia) x86_64
Host: G521 (Default string-CF)
Kernel: Linux 6.12.77
Uptime: 9 mins
Packages: 1605 (nix-system), 7 (nix-user), 5 (flatpak)
Shell: bash 5.3.3
Display (MSI4CE2): 2560x1440 in 27", 120 Hz [External] 
Display (LF27T35): 1920x1080 in 27", 75 Hz [External]
WM: Hyprland 0.52.1 (Wayland)
Theme: Nordic [GTK2/3/4]
Icons: Papirus-Dark [GTK2/3/4]
Font: Adwaita Sans (11pt) [GTK2/3/4]
Cursor: capitaine (24px)
Terminal: alacritty 0.16.1
Terminal Font: alacritty (11.0pt)
CPU: AMD Ryzen 5 7600X3D (12) @ 4.76 GHz
GPU 1: AMD Raphael [Integrated]
GPU 2: NVIDIA GeForce RTX 4060 [Discrete]
Memory: 2.37 GiB / 30.47 GiB (8%)
Swap: 0 B / 33.51 GiB (0%)
Disk (/): 33.62 GiB / 587.71 GiB (6%) - btrfs
Local IP (enp6s0): 192.168.68.108/22
Locale: en_US.UTF-8
[macaw@Helios:~]$ cat /etc/nixos/configuration.nix
{ config, pkgs, … }:
{
############################################################

# Imports

############################################################
imports =
[
./hardware-configuration.nix
./grub.nix
./system.nix
./users.nix
./packages.nix
./programs.nix
./services.nix
];
nix.settings.experimental-features = [ “nix-command” “flakes” ];
}

[macaw@Helios:~]$ cat /etc/nixos/hardware-configuration.nix

#Do not modify this file!  It was generated by ‘nixos-generate-config’

#and may be overwritten by future invocations.  Please make changes

#to /etc/nixos/configuration.nix instead.

{ config, lib, pkgs, modulesPath, … }:

{
imports =
[ (modulesPath + “/installer/scan/not-detected.nix”)
];

boot.initrd.availableKernelModules = [ “nvme” “xhci_pci” “ahci” “usb_storage” “usbhid” “sd_mod” ];
boot.initrd.kernelModules = 
;
boot.kernelModules = [ “kvm-amd” ];
boot.extraModulePackages = 
;

fileSystems.“/” =
{ device = “/dev/disk/by-uuid/fcc5850c-6a9f-4377-b8ac-e9e978c0f087”;
fsType = “btrfs”;
};

fileSystems.“/boot” =
{ device = “/dev/disk/by-uuid/9150-2409”;
fsType = “vfat”;[macaw@Helios:~]$ cat /etc/nixos/
configuration.nix           packages.nix                system.nix
grub.nix                    programs.nix                users.nix
hardware-configuration.nix  services.nix
options = [ “fmask=0077” “dmask=0077” ];
};

swapDevices = [
{ device = “/dev/nvme0n1p3”; }
];

nixpkgs.hostPlatform = lib.mkDefault “x86_64-linux”;
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

[macaw@Helios:~]$ cat /etc/nixos/packages.nix
{ config, pkgs, … }:
let
unstable = import  { };
in
{
################

#PACKAGES

################
fonts.packages = with pkgs; [
ibm-plex
nerd-fonts.blex-mono
];

nix = {
package = pkgs.nix; # ensure you’re using the nix package
extraOptions = ‘’
experimental-features = nix-command flakes
‘’;
};
environment.systemPackages = with pkgs; [
(pkgs.hyprland.overrideAttrs (old: {
postInstall = ‘’
wrapProgram $out/bin/hyprland 
–prefix LD_LIBRARY_PATH : ${pkgs.mesa}/lib
‘’;
}))
git
firefox
neovim
wget
curl
htop
man
unzip
zip
gnutar
vim
gdm
unstable.hyprland
wofi
swww
nemo
prismlauncher
jdk25
python3
python3Packages.pynvim
alacritty
papirus-icon-theme
nordic
capitaine-cursors
nwg-look
rustc
cargo
gcc
fzf
ripgrep
fd
lazygit
gnumake
cmake
jq
pkg-config
pixman
libdrm
libinput
wayland
wayland-protocols
meson
fastfetch
hyprland-qtutils
luarocks
nodejs
ruby
php
ghostscript
tectonic
tree-sitter
mangohud
blueberry
bluez
pavucontrol
libxcvt
];
nixpkgs.config.allowUnfree = true;
programs.steam.enable = true;
programs.gamemode.enable = true;
}

[macaw@Helios:~]$ cat /etc/nixos/programs.nix
{ config, pkgs, … }:
{
################

#PROGRAMS

################
programs.hyprland = {
enable = true;
withUWSM = true;
xwayland.enable = true;
};

environment.etc.“hypr/hyprland.conf”.text = ‘’
source = /home/macaw/.config/hypr/hyprland.conf
‘’;

programs.neovim = {
enable = true;
defaultEditor = true;
};

environment.etc.“nvim”.source = builtins.fetchGit {
url = “https://github.com/LazyVim/starter”;
};
}

[macaw@Helios:~]$ cat /etc/nixos/system.nix
{ config, pkgs, … }:
{
##############

#SYSTEM

##############
networking.hostName = “Helios”;
time.timeZone = “America/Chicago”;
i18n.defaultLocale = “en_US.UTF-8”;

hardware.graphics = {
enable = true;
package = pkgs.mesa;

# Enable 32-bit support for Steam
enable32Bit = true;
package32 = pkgs.pkgsi686Linux.mesa;

};
hardware.nvidia = {
open = false;                      # proprietary driver
modesetting.enable = true;         # DRM/KMS for Wayland
package = pkgs.linuxPackages.nvidia;  # use the latest available kernel-compatible NVIDIA driver
};

system.stateVersion = “25.11”; # DONT TOUCH SAYS WIKI
}

[macaw@Helios:~]$ cat /etc/nixos/services.nix
{ config, pkgs, … }:
{
################

#SERVICES

################
networking.networkmanager.enable = true;
services.openssh.enable = true;
services.pipewire.enable = false;
services.pulseaudio.enable = true;
hardware.bluetooth.enable = true;
services.libinput.enable = true;
services.displayManager.gdm.enable = true;
services.flatpak.enable = true;

security.sudo.enable = true;
security.sudo.wheelNeedsPassword = false;
security.sudo.extraConfig = ‘’
Defaults env_keep += “XDG_CONFIG_HOME XDG_DATA_HOME XDG_STATE_HOME”
‘’;

############

#ENVS

############

I dunno a bettter place for these

environment.variables = {
GTK_THEME = “Nordic”;
XCURSOR_THEME = “Capitaine Cursors”;
XCURSOR_SIZE = “24”;
};
}


[macaw@Helios:~]$ hyprctl monitors
Monitor HDMI-A-2 (ID 0):
1920x1080@74.97300 at -1920x0
description: Samsung Electric Company LF27T35 H1AK500000
make: Samsung Electric Company
model: LF27T35
physical size (mm): 600x340
serial: H1AK500000
active workspace: 1 (1)
special workspace: 0 ()
reserved: 0 0 0 0
scale: 1.00
transform: 0
focused: no
dpmsStatus: 1
vrr: false
solitary: 0
solitaryBlockedBy: windowed mode,missing candidate
activelyTearing: false
tearingBlockedBy: next frame is not torn,user settings,missing candidate
directScanoutTo: 0
directScanoutBlockedBy: user settings,software renders/cursors,missing candidate
disabled: false
currentFormat: XRGB8888
mirrorOf: none
availableModes: 1920x1080@60.00Hz 1920x1080@74.97Hz 1920x1080@59.94Hz 1920x1080@50.00Hz 1680x1050@59.88Hz 1600x900@60.00Hz 1280x1024@75.03Hz 1280x1024@60.02Hz 1440x900@59.90Hz 1280x800@59.91Hz 1152x864@75.00Hz 1280x720@60.00Hz 1280x720@59.94Hz 1280x720@50.00Hz 1024x768@75.03Hz 1024x768@70.07Hz 1024x768@60.00Hz 832x624@74.55Hz 800x600@75.00Hz 800x600@72.19Hz 800x600@60.32Hz 800x600@56.25Hz 720x576@50.00Hz 720x480@60.00Hz 720x480@59.94Hz 640x480@75.00Hz 640x480@72.81Hz 640x480@66.67Hz 640x480@60.00Hz 640x480@59.94Hz 720x400@70.08Hz
colorManagementPreset: srgb
sdrBrightness: 1.00
sdrSaturation: 1.00
sdrMinLuminance: 0.20
sdrMaxLuminance: 80

Monitor DP-4 (ID 1):
2560x1440@119.99800 at 0x0
description: Microstep MSI MAG 275QF CE2M415900340
make: Microstep
model: MSI MAG 275QF
physical size (mm): 600x330
serial: CE2M415900340
active workspace: 2 (2)
special workspace: 0 ()
reserved: 0 0 0 0
scale: 1.00
transform: 0
focused: yes
dpmsStatus: 1
vrr: false
solitary: 0
solitaryBlockedBy: windowed mode,missing candidate
activelyTearing: false
tearingBlockedBy: next frame is not torn,user settings,missing candidate
directScanoutTo: 0
directScanoutBlockedBy: user settings,software renders/cursors,missing candidate
disabled: false
currentFormat: XRGB8888
mirrorOf: none
availableModes: 2560x1440@59.95Hz 2560x1440@120.00Hz 2560x1440@85.00Hz 1920x1080@120.00Hz 1920x1080@119.88Hz 1920x1080@60.00Hz 1920x1080@59.94Hz 1920x1080@50.00Hz 1680x1050@59.95Hz 1280x1024@75.03Hz 1280x1024@60.02Hz 1440x900@59.89Hz 1280x960@60.00Hz 1280x720@60.00Hz 1280x720@59.94Hz 1280x720@50.00Hz 1024x768@75.03Hz 1024x768@70.07Hz 1024x768@60.00Hz 800x600@75.00Hz 800x600@72.19Hz 800x600@60.32Hz 800x600@56.25Hz 720x576@50.00Hz 720x480@60.00Hz 720x480@59.94Hz 640x480@75.00Hz 640x480@72.81Hz 640x480@66.67Hz 640x480@60.00Hz 640x480@59.94Hz
colorManagementPreset: srgb
sdrBrightness: 1.00
sdrSaturation: 1.00
sdrMinLuminance: 0.20
sdrMaxLuminance: 80
2 Likes

Perhaps this comment from an Arch Linux thread could be of help:

wednisee
i’ve found the fix.

nvidia-modeset.hdmi_deepcolor=0

just add this to your kernel parameters
i use NixOS so i had to do this:

boot.kernelParams = [ “nvidia-modeset.hdmi_deepcolor=0” ];
in my configuration.nix

this happens because HDMI DeepColor was disabled by default on 550.144.03 which is why it worked on that specific driver
enabling that breaks high refresh rates on some monitors, which is what nvidia decided to do in 555 and above

original post: https://forum.zorin.com/t/my-monitor-gi … rate/46547

Also, shouldn’t this line be commented out?

  1. Its running over display port but i’ll try it
  2. pasting my config turned some of the pound signs into markdown headers, i must of missed that one when cleaning it up

not at my pc right now but ill test it soon

Update: It did not work, the limit is stil 129.8hz. It is running over displayport 1.4 as I do not have a high enough bandwidth hdmi cable

UPDATE: My drivers were not properly installed. The configuration that fixed it for me was the following:

hardware.nvidia = {
open = false;                       # proprietary driver
modesetting.enable = true;          # for Wayland/Hyprland
package = config.boot.kernelPackages.nvidia_x11;
};

services.xserver.enable = true;
services.xserver.videoDrivers = [ “nvidia” ];
2 Likes