{ pkgs, config, lib, ... }: let cfg = config.grimmShared; screen = with lib; types.submodule { options = { fps = mkOption { type = types.int; default = 60; description = "max framerate of screen"; }; mode = mkOption { type = types.nonEmptyStr; default = "1920x1080"; description = "pixel format of the screen"; }; id = mkOption { type = types.nonEmptyStr; description = "ID of the screen"; }; pos = mkOption { type = types.nullOr types.nonEmptyStr; default = null; example = "0,0"; description = "position where to place the screen"; }; }; }; in { config = with cfg; lib.mkIf (enable && graphical) { # Enable OpenGL hardware.opengl = { enable = true; driSupport = true; driSupport32Bit = true; extraPackages = with pkgs; [ ]; }; chaotic.mesa-git.enable = true; boot.kernelParams = [ "nouveau.config=NvGspRm=1" ]; environment.sessionVariables = { __GL_LOG_MAX_ANISO = "0"; __GL_SHADER_DISK_CACHE = "1"; __GL_SYNC_TO_VBLANK = "0"; __GL_THREADED_OPTIMIZATIONS = "1"; __GL_VRR_ALLOWED = "1"; # MESA_LOADER_DRIVER_OVERRIDE="zink"; # FLATPAK_GL_DRIVERS="mesa-git"; }; environment.systemPackages = with pkgs; [ glfw ]; }; options.grimmShared = with lib; { graphical = mkOption { type = types.bool; default = cfg.screens != { }; description = "whether to force enable graphical components"; }; screens = mkOption { type = types.attrsOf screen; default = { }; description = "Screens to initialize, will activate graphical components"; }; }; }