{ config, pkgs, lib, ... }: { # https://wiki.archlinux.org/title/HiDPI#Wayland # Results in blurry font in non-Wayland applications :/ # https://wiki.archlinux.org/title/HiDPI#Xorg programs.dconf.enable = true; # Overlays. # https://nixos.wiki/wiki/Overlays#In_NixOS # https://discourse.nixos.org/t/use-specific-pkg-version-in-overlay/32741/3 # If on X11, then use patched version of mutter. nixpkgs.overlays = lib.mkIf (! config.services.xserver.displayManager.gdm.wayland) [ ( # Patched version of mutter 44.2. # Outdated example: https://nixos.wiki/wiki/Overlays#Overriding_a_package_inside_a_scope # # On the AUR, they apply only one patch, not three. # And they pick the patch that corresponds to the mutter version. # https://aur.archlinux.org/packages/mutter-x11-scaling # # New patch URL: # -> https://salsa.debian.org/gnome-team/mutter/-/blob/ubuntu/master/debian/patches/ubuntu/x11-Add-support-for-fractional-scaling-using-Randr.patch # For release 44.2: # -> https://salsa.debian.org/gnome-team/mutter/-/tags?sort=updated_desc&search=ubuntu%2F # -> https://salsa.debian.org/gnome-team/mutter/-/tags/ubuntu%2F44.2-3ubuntu1 # -> https://salsa.debian.org/gnome-team/mutter/-/raw/ubuntu/44.2-3ubuntu1/debian/patches/ubuntu/x11-Add-support-for-fractional-scaling-using-Randr.patch # #=> building '/nix/store/yh0jnwyq5351l1rjspjlkimas3wvpf6g-mutter-44.2.drv'... # Elements of nixpkgs must be taken from final and prev. final: prev: { # Elements of pkgs.gnome must be taken from gfinal and gprev. gnome = prev.gnome.overrideScope' (gfinal: gprev: { mutter = gprev.mutter.overrideAttrs (oldAttrs: if oldAttrs.version == "44.2" then { patches = (oldAttrs.patches or []) ++ [ (prev.fetchpatch { url = "https://salsa.debian.org/gnome-team/mutter/-/raw/ubuntu/44.2-3ubuntu1/debian/patches/ubuntu/x11-Add-support-for-fractional-scaling-using-Randr.patch"; # Determining the hash: https://github.com/NixOS/nixpkgs/issues/191128#issuecomment-1246030431 hash = "sha256-GCtz87C1NgxenYE5nbxcIIxqNhutmdngscnlK10fRyQ="; }) ]; } else throw "Mutter version mismatch. Please update patch." ); }); } ) ]; home-manager.users.yoda = { osConfig, config, pkgs, ... }: { dconf.settings = { "org/gnome/mutter" = { experimental-features = [ ( if (osConfig.services.xserver.displayManager.gdm.wayland) # Wayland fractional scaling then "scale-monitor-framebuffer" # X11 fractional scaling else "x11-randr-fractional-scaling" ) ]; }; }; }; }