#
#  Gnome Configuration
#  Enable with "gnome.enable = true;"
#
{
  config,
  lib,
  pkgs,
  vars,
  ...
}:
with lib; {
  options = {
    gnome = {
      enable = mkOption {
        type = types.bool;
        default = false;
      };
    };
  };

  config = mkIf (config.gnome.enable) {
    hardware.pulseaudio.enable = false;
    services = {
      xserver = {
        enable = true;

        layout = "de";
        libinput.enable = true;
        modules = [pkgs.xf86_input_wacom];
        wacom.enable = true;

        desktopManager.gnome.enable = true; # Desktop Environment
      };
      udev.packages = with pkgs; [
        gnome.gnome-settings-daemon
      ];
    };

    environment = {
      systemPackages = with pkgs; [
        # System-Wide Packages
        gnome.adwaita-icon-theme
        gnome.dconf-editor
        gnome.gnome-tweaks
      ];
      gnome.excludePackages =
        (with pkgs; [
          # Ignored Packages
          gnome-tour
        ])
        ++ (with pkgs.gnome; [
          atomix
          epiphany
          geary
          gedit
          gnome-characters
          gnome-contacts
          gnome-initial-setup
          hitori
          iagno
          tali
        ]);
    };
  };
}