{ flake.modules.nixos.xserver = { config, lib, ... }: with lib; let cfg = config.mySystem.desktop.xserver; in { options.mySystem.desktop.xserver = { enable = mkEnableOption "Enables xserver"; de = mkOption { type = types.enum ["gnome" "kde"]; default = "gnome"; example = "kde"; description = "Which DE to enable"; }; videoDrivers = mkOption { type = types.listOf types.str; default = []; example = ["amdgpu"]; description = "Extra X11 video drivers to load"; }; }; config.services = mkIf cfg.enable { displayManager = { sddm.enable = mkIf (cfg.de == "kde") true; gdm.enable = mkIf (cfg.de == "gnome") true; }; desktopManager = { plasma6.enable = mkIf (cfg.de == "kde") true; gnome.enable = mkIf (cfg.de == "gnome") true; }; gnome = mkIf (cfg.de == "gnome") { gnome-browser-connector.enable = true; games.enable = false; gnome-remote-desktop.enable = true; gnome-online-accounts.enable = true; sushi.enable = true; }; xserver = { inherit (cfg) enable; videoDrivers = cfg.videoDrivers; xkb = { layout = "fr"; variant = "bepo_afnor"; }; }; }; }; }