{ inputs, pkgs, lib, config, ... }: let cfg = config.modules.Hyprland; pkgs-unstable = inputs.hyprland.inputs.nixpkgs.legacyPackages.${pkgs.stdenv.hostPlatform.system}; in { options.modules.Hyprland = { enable = lib.mkEnableOption "Hyprland"; }; config = lib.mkIf cfg.enable { programs.xwayland.enable = true; programs.hyprland = { enable = true; withUWSM = true; # set the flake package package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland; # make sure to also set the portal package, so that they are in sync portalPackage = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland; }; xdg.portal = { enable = true; extraPortals = with pkgs; [ xdg-desktop-portal-gtk ]; }; environment.sessionVariables.NIXOS_OZONE_WL = "1"; nix.settings = { substituters = [ "https://hyprland.cachix.org" ]; trusted-public-keys = [ "hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" ]; }; hardware.graphics = { package = pkgs-unstable.mesa; # if you also want 32-bit support (e.g for Steam) enable32Bit = true; package32 = pkgs-unstable.pkgsi686Linux.mesa; }; }; }