{ config, inputs, lib, pkgs, ... }: let cfg = config.my.environments.gnome; in { options.my.environments.gnome = { enable = lib.mkOption { type = lib.types.bool; default = true; description = "Enable GNOME desktop environment"; }; users = lib.mkOption { type = inputs.self.lib.usersOptionType lib; default = "jawz"; description = "Users to install GNOME extensions for"; }; }; config = lib.mkIf cfg.enable { qt.enable = true; services = { gvfs.enable = true; displayManager.gdm.enable = true; desktopManager.gnome.enable = true; }; environment.gnome.excludePackages = builtins.attrValues { inherit (pkgs) baobab cheese epiphany gnome-characters gnome-connections gnome-font-viewer gnome-photos # gnome-text-editor gnome-tour yelp gnome-music totem ; }; users.users = inputs.self.lib.mkUserPackages lib cfg.users ( builtins.attrValues { inherit (pkgs.gnomeExtensions) tactile # window manager freon # hardware temperature monitor gamemode-shell-extension # I guess I'm a gamer now? burn-my-windows # special effects for when closing windows pano # clipboard manager pop-shell ; } ); }; }